不是.NET File.Move到新目录导致数据传输?

时间:2012-10-31 12:40:38

标签: .net file io

我们有一个应用程序可以将非常大的数据文件导出到Windows网络共享。我们有可能要求在处理后期将该文件移动到同一共享下的其他文件夹中。我们通常使用File.Move重命名同一目录中的文件,因此开销很小。但我担心这样做是为了一个新的目录,因为它会导致数据被复制,这是不可接受的。在linux / unix中,mv命令只是操作文件夹节点,因此只要它是相同的设备/卷就很快。但对于Windows,我认为在很多情况下它会执行copy-then-delete-source。这是我想避免的。

所以我的问题是在Windows网络共享上的.NET 4 File.Move(),我想将文件从一个目录移动到另一个相邻的目录,是否需要移动数据,或者它是否为无论文件大小如何,快速简单的文件结构操作?

1 个答案:

答案 0 :(得分:1)

如果基础Windows API调用正在移动到同一卷上的另一个文件夹,则它将只移动文件的目录条目(而不是复制它)。这适用于网络卷以及本地卷。如果共享不以某种方式跨越多个卷,那么你应该没问题。试试吧,看看。