Я делаю приложение, которое копирует файлы из одного места в другое, в моем приложении я использую пул потоков, поэтому несколько копий могут быть выполнены вместе. Когда я попытался скопировать файл только для чтения, я получил исключение «отказ в доступе». Для того, чтобы исправить это я изменил файл атрибуты RW с помощью следующей команды:C# как изменить атрибуты файлов и копию
File.SetAttributes(fileName, File.getAttributes(fileName) & ~FileAttributes.ReadOnly);
атрибуты файла был успешно изменен, но команды копирования:
File.Copy(fileName, destinationPath, true);
вернулся тот же «отказано в доступе» исключение ,
Когда я снова запустил это приложение в том же файле, все работает правильно и успех копирования, поскольку атрибуты файла были изменены в последнем запуске. Мой вопрос в том, почему файл не был скопирован в первом запущенном приложении, даже я сначала изменил атрибуты, а затем попытался скопировать файл?
Возможно, ошибка «доступ запрещена» означает, что файл используется другой программой; в этом случае вы можете попробовать открыть его с помощью FileStream («...», FileMode.Open, FileAccess.Read, FileShare.ReadWrite); и вручную скопировать его –
Также, возможно, вы пытаетесь перезаписать readonly файл, как описано здесь: http://stackoverflow.com/questions/18554108/c-sharp-unauthorizedaccessexception-in-file-copy –
Hmya, не разбудите свою упакованную оболочку, если вы хотите, чтобы это последовательно преуспело. Вы можете сначала переименовать файл, чтобы он не мог остановить вас от копирования. Затем удалите переименованный файл, он исчезнет, когда сканирование будет завершено. –