File.replace бросать IOException.
-
24-09-2019 - |
Вопрос
У меня есть приложение, которое может сделать модифицировать изображения. В некоторых случаях это делает файловые файлы меньше, в некоторых случаях больше.
Программа не имеет возможности «не заменить файл, если результат имеет большие файлы».
Поэтому я написал небольшое приложение C #, чтобы попытаться решить это.
Вместо перезаписывания файлов я заставляю приложение записать результат в папку под текущим и имени, что тест на папку.
Приложение C #, которое я написал, сравнивает, сбрасывает содержимое обеих папок, и помещает полный путь к файлам (ы) в два объекта списка. Затем я сравниваю и замените.
Замена не работает, однако. Я получаю следующую IOException:
Невозможно удалить файл для замены
Расположение находится на внешнем жестком диске, на котором у меня есть полные права.
Теперь я знаю, что могу просто сделать file.delete и file.move в этом порядке, но это исключение заинтересовало меня Зачем Эта конкретная настройка не работает.
Вот исходный код: http://pastebin.com/4VQ82UMU.
И да, файл, указанный как последний аргумент функции замены, существует.
Решение
Убедитесь, что ваш файл для замены не загружен в память, что может вызвать блокировку в файле
Попробуйте использовать оператор с использованием для автоматического распоряжения ресурса,
Согласно документации:
Если ESTERBACKUPFileName находится на другом диске, он не удален в качестве состояний документации, вместо этого брошен ioException с сообщением «Невозможно удалить файл для замены». брошен