2017-08-02 3 views
1

Javaから孤立したinodeへの道があるので、OSでそれらをクリーンアップできますか?OSがファイルを削除するようにしましょう

私の目標は、再帰的にフォルダを削除することですが、削除された時点は問題ではありません。それを削除するには時間がかかり、遅くなるので、私はFile.deleteOnExit()を使用していますが、ディレクトリのスケルトンはそのまま残しています。これを行うための解決策はありますか?これは私が何をすべきか、現在ある:フォルダの内容のいずれかをマーキングする前に

public static void markAllForDeletion(String folderName){ 
    String newName = folderName + " " + UUID.randomUUID().toString(); 
    new File(folderName).renameTo(new File(newName)); 
    markBelow(new File(newName)); 
} 

public static void markBelow(File folder){ 
    for(File file: folder.listFiles()){ 
     if(file.isDirectory()){ 
      markBelow(file); 
     } else { 
      file.deleteOnExit(); 
     } 
    } 
    folder.deleteOnExit(); 
} 

答えて

2

マーク削除するフォルダ:

public static void markBelow(File folder){ 
    folder.deleteOnExit(); 
    for(File file: folder.listFiles()){ 
     if(file.isDirectory()){ 
      markBelow(file); 
     } else { 
      file.deleteOnExit(); 
     } 
    } 
} 

deleteOnExitからの削除がthe docsごとに、逆の順序で行わためです:

ファイル(またはディレクトリ)は、それらが登録されている逆順に削除されます。

関連する問題