做文件拷贝/删除和移动之间的区别

有什么区别

  1. 复制文件,并使用删除它File.Copy()File.Delete()
  2. 移动使用文件File.Move()

在执行这些操作所需的权限方面有什么不同? 任何帮助非常赞赏。

--------------解决方案-------------

File.Move方法可以用于将文件从一个路径转移到另一个。 这种方法在整个磁盘卷的作品,它不抛出一个异常,如果源和目标是相同的。

您不能使用Move方法来覆盖现有文件。 如果试图通过移动同名的文件到该目录中进行替换的文件,你会得到一个IOException异常。 为了克服这一点,你可以使用复制的结合,删除方法

性能明智的, 如果在一个和相同的文件系统中,移动一个文件是(以简化的计算)只是调整文件系统本身(可能调节在红色/黑色树一些节点)的一些内部寄存器,而无需实际移动的东西。

想象一下,你有180MiB移动,你可以写上你的硬盘在大致30MiB /秒。 然后用复制/删除,大约需要6秒完成。 用一个简单的举动[同一文件系统],它会这么快,你甚至可能没有意识到这一点。

(我曾经写过一些事务性文件系统助手,将移动或复制多个文件,全或无;为了使承诺尽可能快,我移动/复制所有的东西到一个临时子文件夹,然后再最终提交会存在的数据移动到另一文件夹(以启用回滚),和新的数据到目标)。

我不认为有什么不同的权限明智的,但我个人更喜欢使用File.Move(),因为那么你有两个动作在同一个“交易”发生。 换句话说,如果在移动的东西失败,整个操作失败。 不过,如果你在两个步骤打破它(复制+删除),如果复制工作,并删除失败,你就必须扭转“交易”(删除复制)手动。

来源和目标:权限在文件传输在两个点进行检查。 所以,如果你没有读的源文件夹的权限,或者你没有写权限在目标,然后这些方法都抛出AccessDeniedException异常。 换句话说,许可检查是不可知的使用方法。

分类:C# 时间:2015-03-15 人气:0
本文关键词: .NET,文件,文件IO
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.781 (s). 10 q(s)