有关C#中System.IO.File.Copy和copy,xcopy,robocopy命令的一些问题

Alm*_*ato 2 c# copy xcopy file robocopy

我的C#Windows服务应用程序通过SMB,FTP或SSH整天通过网络复制大量文件.要做文件副本,我只需使用System.IO.File.Copy..NET Framework在这里执行哪个命令?是复制吗?也许xcopy?这在不同的Windows版本上有所不同吗?我还读到了robocopy,但似乎没有API.是否值得使用P/Invoke与xcopyrobocopy而不是简单的副本?目前我对我的情况表示怀疑.

在将来的版本中,我必须将所有文件复制到两个远程目录而不是一个.那么当我通过复制文件时会发生什么

File.Copy("c:\ test.txt","\\ server1\dir1\test.txt")

然后打电话

File.Copy("\\ server1\dir1\test.txt","\\ server1\dir2\test.txt")

文件是否会从我的服务器复制两次到目标服务器?据我所知,我的电脑说将文件从A复制到B,所以文件将从A转移到我的机器到B,对吗?

Wim*_*nen 5

要执行文件副本,我只需使用System.IO.File.Copy..NET Framework在这里执行哪个命令?

它使用Windows API中的CopyFile例程.

文件是否会从我的服务器复制两次到目标服务器?

不,您的示例首先从A复制到B,然后从B复制到C.这非常低效,因为第二个复制操作会在将文件数据发送到C之前将文件数据从B读回到A.您应该从中复制两个操作. "c:\ test.txt"到两个不同的目的地.

编辑:我查看了它,结果发现如果您在同一个远程共享文件夹中复制,该文件将不会被读回本地计算机.因此,在您在dir1共享中复制的示例中,没有问题.但是,只要从一个共享复制到另一个共享,此优化就会丢失,并且在复制操作期间文件将被读取到本地内存.