C# 如何复制只读文件?

C# 如何复制只读文件?,c#,.net,C#,.net,当源文件设置了只读属性时,System.IO.File.Copy失败 复制到我得到一个错误: 对路径的访问被拒绝。 (系统。未经授权的访问例外) 我有一个场景,在修改模板文件之前将其复制到目标路径,为了安全起见,我希望模板是只读的 为什么我不能以这种方式复制只读文件,如何才能轻松/明智地实现我最想要的?和当从未创建此文件时,为什么目标文件会出现异常 注意:复制的文件是否为只读我不在乎,这很容易修复您的诊断不正确。文件复制永远不会失败,因为源是只读的。如果现有目标文件为只读,则文件复制将失败。简单

当源文件设置了只读属性时,
System.IO.File.Copy
失败

复制到我得到一个错误:

对路径
的访问被拒绝。 (系统。未经授权的访问例外)

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

为什么我不能以这种方式复制只读文件,如何才能轻松/明智地实现我最想要的?和当从未创建此文件时,为什么目标文件会出现异常


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

您的诊断不正确。文件复制永远不会失败,因为源是只读的。如果现有目标文件为只读,则文件复制将失败。简单的补救方法是在复制之前清除目标文件上的只读属性。sll的回答解释了如何做到这一点:

最有可能发生的情况是:

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

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

    对路径的访问被拒绝。 (系统。未经授权的访问例外)


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

    只读不会阻止您复制文件,但会阻止您移动文件。目标是只读的,或者您没有源文件的读取权限。请更正。我没有看到文件,因为在复制时,保留了原始时间戳,所以我没有看到它出现(文件名都非常相似),然后文件修改失败,所以它没有更改时间戳。谢谢