Javaで空のフォルダーを削除しようとしています。これが私のコードです:
try (DirectoryStream<Path> stream = Files.newDirectoryStream(path)) {
for (Path file : stream) {
if (file.toFile().isFile()) {
System.out.println("Path is File");
System.out.println("Filename: " + file.toString());
if(file.toString().contains("DS_Store")){
Files.delete(file);
System.out.println("DS_Store file deleted");
}
}
if (file.toFile().isDirectory()) {
if (file.toFile().list().length > 0) {
System.out.println("Folder is not empty");
System.out.println("File length: " + file.toFile().list().length);
} else {
removeEmptyFolder(file);
Files.delete(file);
System.out.println("Deleting empty folder");
}
}
}
} catch (IOException ex) {
Logger.getLogger(jpegData.class.getName()).log(Level.SEVERE, null, ex);
System.err.println("IOException in removeEmptyFolder");
}
実際には機能しません。隠しファイルが原因だと思います。「DS_Store」ファイルのチェックを行っていますが、実際には機能していないようです。任意のヒント?このコードもおそらく短くなる可能性があります。
編集: コードの結果について言及するのを忘れていました。コンソールに「DS_Store ファイルが削除されました」と表示されますが、自動的に再作成されているか、Files.delete(file) が機能していません。さらに、3 つの DS_Store ファイルからのみ検出されます。エラーは表示されず、フォルダーは削除されません。