2017-02-11 8 views
0

私は終了時にこれらの一時ファイルを削除しようとしています: - "hsperfdata_user" - "JNativeHook-2.1.0" - "JNA-196922"終了時に一時ファイルが削除されません - これはなぜですか?

それは、彼らが削除されているようには見えません!

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がVMにロードされているため、実行できません。問題が発生した場合は、ファイルをインストール先に永久に解凍し、適切なjava.library.pathが設定されている必要があります。技術的な制約のため、javaが安全にJVMからライブラリを削除するためのSystem.unload(...)メソッドを提供していないため、これは不可能であることを繰り返し述べたいと思います。

それは多分可能:https://github.com/kwhat/jnativehook/issues/148#issuecomment-282173982

関連する問題