У меня есть приложение, которое может изменять изображения. В некоторых случаях это уменьшает размер файла, в некоторых случаях увеличивает его.
В программе нет опции «не заменять файл, если результат имеет больший размер».
Поэтому я написал небольшое приложение на C#, чтобы попытаться решить эту проблему.
Вместо того, чтобы перезаписывать файлы, я заставляю приложение записывать результат в папку под текущей и называть эту папку Test.
Приложение C#, которое я написал, сравнивает содержимое обеих папок и помещает полный путь к файлу (файлам) в два объекта List. Потом сравниваю и заменяю.
Однако замена не работает. Я получаю следующее исключение IOException:
Невозможно удалить файл для замены
Местоположение находится на внешнем жестком диске, на который у меня есть полные права.
Теперь я знаю, что могу просто выполнить File.Delete и File.Move в таком порядке, но это исключение заставило меня задуматься, почему эта конкретная установка не будет работать.
Вот исходный код: http://pastebin.com/4Vq82Umu
И да, файл, указанный в качестве последнего аргумента функции замены, существует.