Не удалось удалить оригинальный файл
Мы запускаем jar, используя пакетный файл в качестве службы окон и помещаем XML-файлы в c:/processed
каталог;
если xml имеет ошибочный формат, переместите его в папку ошибок; Мы используем метод ниже, чтобы переместить файл в папку с ошибкой, но получаем исключение ниже.
Я думаю, что когда процесс запущен, он не может переместить файл в папку с ошибкой.
FileUtils.moveToDirectory("a.xml", "c:/processed/error", false);
исключение в MoveErrorFolder: не удалось удалить исходный файл "c:/processed/a.xml" после копирования в "c:/processed/error/a.xml"
7 ответов
- Процесс Java не имеет права удалять файл, но если вы можете написать на нем, то вы можете удалить его.
- Файл заблокирован другим процессом. Обычно это происходит, когда вы пишете CSV, открытый в Excel.
- Файл заблокирован процессом Java самостоятельно, закройте () файл перед его перемещением.
После reader.close() поставить Thread.sleep() - работает как шарм
reader.close();
// Thread is Explicitly made to Sleep as Threads were shared and files were not getting Moved.
Thread.sleep(10000);
Не могли бы вы попробовать этот метод из Apache:
void org.apache.commons.io.FileUtils.moveFileToDirectory(File srcFile, File destDir, boolean createDestDir)
например
использовать этот импорт
import org.apache.commons.io.FileUtils;
и ваш код будет выглядеть так:
FileUtils.moveFileToDirectory(new File("c:/processed/a.xml"), new File("c:/processed/error"), false);
Я боролся с этой ошибкой с последних 24 часов. Ни один из ответов выше не работал для меня. Моя операционная система Windows 7 64-битная, и я использую JDK 6. Я попробовал методы FileUtils.moveToDirectory, а также file.delete.
Я подозревал, что это как-то связано с Java. Я удалил и переустановил JDK 6 (я просто запустил установщик как администратор) и перезапустил мою машину и Eureka, ошибка исчезла, и все заработало.
Теперь не спрашивайте меня, почему я все еще использую JDK 6 в 2017 году (некоторые корпоративные программы ****)
Другое исключение, дающее больше подробностей, возможно, вложено в Исключение, которое содержится в свойстве причины
1) Убедитесь, что у вас нет открытого XML в редакторе / средстве просмотра или используемого другим процессом.
2) убедитесь, что вы.close() перед перемещением файла.
Проверьте, открыли ли вы файл в каталоге для чтения или записи и не звонили .close();
прежде чем пытаться удалить родительский каталог.