C#如何更改文件属性和复制

问题描述:

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

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

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

File.Copy(fileName, destinationPath, true); 

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

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

+0

也许'拒绝访问'错误意味着该文件正在被另一个程序使用;在这种情况下,您可以尝试使用FileStream(“...”,FileMode.Open,FileAccess.Read,FileShare.ReadWrite)打开它;'并手动复制它 –

+0

另外,也许您正尝试覆盖只读文件,就像这里解释:http://*.com/questions/18554108/c-sharp-unauthorizedaccessexception-in-file-copy –

+0

Hmya,如果你希望这一贯成功,不要唤醒你收缩的恶意软件。您可以先重命名该文件,以防止复制。然后删除重命名的文件,扫描完成后它最终会消失。 –

我认为你的目的地路径在系统文件夹或程序文件夹中,这就是为什么它不让你把文件放在里面。为了解决这个问题,你需要以管理员身份运行你的可执行文件