.NET Directory.Move()与File.Move()

埃里克

我们拥有一个将文件存储在临时位置的应用程序,直到用户决定完成交易为止。临时目录对于每个事务都是唯一的。一旦完成,文件将从临时位置移动到最终位置,这对于每个事务也是唯一的。一切正常,没有任何问题。

我很惊讶,但是在搜索Google和SO时,我们找不到任何通常被认为是最佳做法的主题:

  1. 调用System.IO.Directory.Move(src,des)一次即可移动整个目录,或者
  2. 调用System.IO.File.Move(src,des)一次移动一个文件。

由于这些决定通常取决于许多因素,因此我应注意以下情况:

  1. 源目录和目标目录将始终位于同一台计算机上,但是进行调用的应用程序将位于同一网络上的另一台计算机上。我相信应用程序服务器和文件服务器是同一台物理计算机上的独立VM,但我并不乐观。
  2. 文件数的范围可以从1到10,或者更多。我自己没有监视生产系统,因此我不确定平均文件数或计数的分布范围。
微病毒

我认为最大的问题不是速度,而是速度:移动错误会发生什么?

我将使用LukeH答案中的信息,而不是在此重复。

如果MoveFile目录移动无法移动单个文件,则应采取适当的行为如果使用每个文件移动,则必须以适当的方式自己处理错误情况。这需要仔细考虑。

请注意,的文档MoveFile指定:

一个警告是,当目标位于不同的卷上时,MoveFile函数将在目录移动时失败。

这可能对您来说不是问题,也不是使用逐文件Move的原因。Directory.Move文档明确提到这(对于和参考源Directory.Move明确地检查源和具有相同根目的地)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章