如何复制只读文件?

时间:2014-10-24 10:06:32

标签: c# .net

当源文件设置了只读属性时,

System.IO.File.Copy失败。

复制到我收到错误:

  

拒绝访问路径<destination>。   (System.UnauthorizedAccessException的)

我有一个场景,我在修改模板文件之前将模板文件复制到目标路径,为了安全起见,我认为模板是只读的。

为什么我不能以这种方式复制只读文件,如何才能最轻松/最明智地实现我想要的?并且......当从未创建此文件时,为什么目标文件有例外?

注意:复制的文件是否是只读的我不在乎,这很容易解决

2 个答案:

答案 0 :(得分:6)

您错误地诊断了这一点。文件复制永远不会失败,因为源是只读的。如果现有目标文件是只读的,则文件复制将失败。简单的补救措施是在复制之前清除目标文件上的只读属性。这里的答案解释了如何做到这一点:How to remove a single Attribute (e.g. ReadOnly) from a File?

最有可能发生的事情是:

  1. 您将文件从源复制到目标。目标路径最初不存在。该文件已成功复制。
  2. 原始源文件具有只读属性集。因此该属性已传输到目标文件。
  3. 您随后尝试复制到同一目标路径,但由于具有该路径的文件存在且具有只读属性,因此操作失败。

答案 1 :(得分:2)

system.io.file.copy中没有任何内容阻止你处理只读文件,我想你的问题出在目的地。因为您的文件是只读的,所以会复制readonly属性。接下来,您尝试使用失败的readonly属性覆盖目标。在复制文件之前,请检查目标位置是否有文件。

  

拒绝访问该路径。   (System.UnauthorizedAccessException的)

表示您无权访问目标文件夹。你在应对c:\?确保用户具有在您的目标文件夹中写入的正确权限。