如何在Java中检查目录是否为空

2022-08-31 13:47:15

我想检查Java中的目录是否为空。但是该目录中可能有很多文件,因此如果可能的话,我想在不查询其文件列表的情况下执行此操作。


答案 1

在 JDK7 中,您可以使用 Files.newDirectoryStream 打开目录,然后使用迭代器的 hasNext() 方法来测试是否有任何文件要迭代(不要忘记关闭流)。与java.io.File list方法相比,这应该更适合大型目录或目录位于远程文件系统上的位置。

例:

private static boolean isDirEmpty(final Path directory) throws IOException {
    try(DirectoryStream<Path> dirStream = Files.newDirectoryStream(directory)) {
        return !dirStream.iterator().hasNext();
    }
}

答案 2
File parentDir =  file.getParentFile();
if(parentDir.isDirectory() && parentDir.list().length == 0) {
    LOGGER.info("Directory is empty");
} else {
    LOGGER.info("Directory is not empty");
}