2017-02-11 1 views
0

Я пытаюсь удалить эти временные файлы на выходе: - "hsperfdata_user" - "JNativeHook-2.1.0" - "ЮНА-196922"Файл Temp не удаляется при выходе - почему это?

Это не кажется, что они удалялись!

if (temp != null) { 
    for (File file : temp.listFiles()) { 
     if (file.getName().contains("JNative") || file.getName().contains("rar") || file.getName().contains("hsper") || file.getName().contains("jna") || file.getName().contains("dll")) { 
      file.deleteOnExit(); 
      System.out.println(file.getName()); 
     } 
    } 
} 

«Повторяющийся» вопрос относится к удалению файлов, которые вы создали, - я не создал эту температуру. файлы намеренно. Они создаются автоматически.

+0

У нас нет способа узнать, что 'temp' содержит (не говоря уже о его тип). 'temp' может не иметь ничего в этом. – byxor

+1

Возможный дубликат [deleteOnExit не удалять файл] (http://stackoverflow.com/questions/24758520/deleteonexit-not-deleting-file) – Janar

+0

@BrandonIbbotson Я вижу там временные файлы - они не удаляются. – Exuro

ответ

0

Это невозможно в Windows, потому что DLL по-прежнему загружается в виртуальную машину, когда она пытается удалить себя. Если это проблема, файл должен быть постоянно распакован в место установки и соответствующий набор java.library.path. Я хотел бы повторить, что это невозможно, потому что java не предоставляет метод System.unload(...) для безопасного удаления библиотеки из JVM из-за технических ограничений.

Это может быть, возможно: https://github.com/kwhat/jnativehook/issues/148#issuecomment-282173982