Вопрос

У меня есть приложение, которое может сделать модифицировать изображения. В некоторых случаях это делает файловые файлы меньше, в некоторых случаях больше.

Программа не имеет возможности «не заменить файл, если результат имеет большие файлы».

Поэтому я написал небольшое приложение C #, чтобы попытаться решить это.

Вместо перезаписывания файлов я заставляю приложение записать результат в папку под текущим и имени, что тест на папку.

Приложение C #, которое я написал, сравнивает, сбрасывает содержимое обеих папок, и помещает полный путь к файлам (ы) в два объекта списка. Затем я сравниваю и замените.

Замена не работает, однако. Я получаю следующую IOException:

Невозможно удалить файл для замены

Расположение находится на внешнем жестком диске, на котором у меня есть полные права.

Теперь я знаю, что могу просто сделать file.delete и file.move в этом порядке, но это исключение заинтересовало меня Зачем Эта конкретная настройка не работает.

Вот исходный код: http://pastebin.com/4VQ82UMU.

И да, файл, указанный как последний аргумент функции замены, существует.

Это было полезно?

Решение

Убедитесь, что ваш файл для замены не загружен в память, что может вызвать блокировку в файле

Попробуйте использовать оператор с использованием для автоматического распоряжения ресурса,

Согласно документации:

Если ESTERBACKUPFileName находится на другом диске, он не удален в качестве состояний документации, вместо этого брошен ioException с сообщением «Невозможно удалить файл для замены». брошен

http://msdn.microsoft.com/en-us/library/9d9h163f.aspx.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top