Не удалось удалить оригинальный файл

Мы запускаем jar, используя пакетный файл в качестве службы окон и помещаем XML-файлы в c:/processed каталог;

если xml имеет ошибочный формат, переместите его в папку ошибок; Мы используем метод ниже, чтобы переместить файл в папку с ошибкой, но получаем исключение ниже.

Я думаю, что когда процесс запущен, он не может переместить файл в папку с ошибкой.

FileUtils.moveToDirectory("a.xml", "c:/processed/error", false);

исключение в MoveErrorFolder: не удалось удалить исходный файл "c:/processed/a.xml" после копирования в "c:/processed/error/a.xml"

7 ответов

  1. Процесс Java не имеет права удалять файл, но если вы можете написать на нем, то вы можете удалить его.
  2. Файл заблокирован другим процессом. Обычно это происходит, когда вы пишете CSV, открытый в Excel.
  3. Файл заблокирован процессом 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(); прежде чем пытаться удалить родительский каталог.

Другие вопросы по тегам