gpt4 book ai didi

c# - C#中System.IO.File.Copy和copy、xcopy、robocopy命令的一些问题

转载 作者:行者123 更新时间:2023-11-30 19:16:41 37 4
gpt4 key购买 nike

我的 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,对吗?

最佳答案

To do the file copies I simply use System.IO.File.Copy. Which command does the .NET Framework execute here?

它使用 CopyFile Windows API 中的例程。

Will the files be copied twice from my server to the target server?

不,您的示例首先从 A 复制到 B,然后从 B 复制到 C。这确实效率低下,因为第二次复制操作在将文件数据发送到 C 之前将文件数据从 B 读回 A。您应该有两个将操作从“c:\test.txt”复制到两个不同的目的地。

编辑:我调查了一下,发现如果您在同一个远程共享文件夹中复制,文件将不会读回本地机器。因此,在您在 dir1 共享中复制的示例中,没有问题。但是,一旦您从一个共享复制到另一个共享,这种优化就会丢失,文件将在复制操作期间被读取到本地内存。

关于c# - C#中System.IO.File.Copy和copy、xcopy、robocopy命令的一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22452449/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com