Я борюсь с этим уже некоторое время. Я не могу получить доступ к файлу после вызова метода File.Copy. Вот что я пробовал:
File.Copy(sourceFile, destinationFile, true);
FileStream fs = File.Open(destinationFile, FileMode.Open);
Я получаю UnauthorizedAccessException во второй строке. Пишет: Доступ к пути... запрещен. Я также попробовал предложение, изложенное здесь, но это не сработало.
Любая помощь приветствуется.
РЕДАКТИРОВАТЬ: Вот что я узнал. Если я сделаю это:
File.Copy(sourceFile, destinationFile, true);
FileStream fs = File.Open(destinationFile, FileMode.Open, FileAccess.Read);
Он не выдает исключения. Файл, к которому я пытаюсь получить доступ, доступен только для чтения. Итак, я попытался удалить атрибут только для чтения следующим образом:
File.Copy(sourceFile, destinationFile, true);
FileInfo fileInfo = new FileInfo(destinationFile);
fileInfo.IsReadOnly = false;
FileStream fs = File.Open(destinationFile, FileMode.Open, FileAccess.ReadWrite);
И я получаю то же исключение, что и раньше. Кстати, я проверил, могу ли я открыть файл вручную и отредактировать его, и я могу. Конечно, когда я снимаю флажок только для чтения. Я также проверил атрибуты файла в проводнике Windows во время отладки, сразу после третьей строки, и файл больше не доступен только для чтения. Проверив все это, я не понимаю, почему исключение выдается на четвертой строке.
System.Threading.Thread.Sleep(1000);
между строками, чтобы увидеть, не является ли это проблемой синхронизации (файл все еще может быть заблокированFile.Copy()
). - person oleschri   schedule 06.06.2011