【问题标题】:C# how to change file attributes and copyC#如何更改文件属性和复制
【发布时间】:2015-08-16 08:09:52
【问题描述】:

我正在制作一个将文件从一个位置复制到另一个位置的应用程序,在我的应用程序中我使用线程池,因此可以一起完成几个副本。 当我尝试复制只读文件时,出现“拒绝访问”异常。为了解决这个问题,我使用以下命令将文件属性更改为 RW:

File.SetAttributes(fileName, File.getAttributes(fileName) & ~FileAttributes.ReadOnly);

文件属性更改成功,但复制命令:

File.Copy(fileName, destinationPath, true);

返回相同的“拒绝访问”异常。

当我在同一个文件上再次运行此应用程序时,一切都运行正常并且复制成功,因为文件属性在上次运行中发生了更改。 我的问题是为什么文件没有在第一个运行的应用程序中复制,即使我先更改了属性,然后我尝试复制文件?

【问题讨论】:

  • 可能access denied 错误意味着该文件正在被另一个程序使用;这种情况可以尝试用FileStream("...", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);打开并手动复制
  • 另外,也许您正试图覆盖只读文件,如下所述:stackoverflow.com/questions/18554108/…
  • Hmya,如果您希望它始终成功,请不要唤醒您的收缩包装的恶意软件。您可以先重命名文件,这样它就不会阻止您复制。然后删除重命名的文件,扫描完成后最终会消失。

标签: c# threadpool file-copying file-attributes


【解决方案1】:

我认为您的目标路径位于系统文件夹或程序文件夹中,这就是它不允许您将文件放入其中的原因。为了解决这个问题,你需要以管理员身份运行你的可执行文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    相关资源
    最近更新 更多