Java:如何检查仅包含文件的目录

Java:如何检查仅包含文件的目录,java,directory,Java,Directory,我正在尝试上载只包含csv文件的zip文件。 现在,在获取文件数据之前,我必须验证我提取的目录是否只包含csv文件,而不包含任何其他包含csv文件的子文件夹/目录?您可以这样做: File rootDir = new File("/my/path/to/exploded/zip/file"); boolean onlyFiles = Arrays.stream(rootDir.list()) .allMatch(filename -> new File

我正在尝试上载只包含csv文件的zip文件。
现在,在获取文件数据之前,我必须验证我提取的目录是否只包含csv文件,而不包含任何其他包含csv文件的子文件夹/目录?

您可以这样做:

File rootDir = new File("/my/path/to/exploded/zip/file");
boolean onlyFiles = Arrays.stream(rootDir.list())
                   .allMatch(filename -> new File(rootDir, filename).isFile());
但它只能确保
rootDir
下面的所有文件都是文件而不是目录。您可以添加另一个条件来检查所有文件以给定扩展名结尾,如
.csv

File rootDir = new File("/");
boolean onlyCsvFiles = Arrays.stream(rootDir.list())
                      .allMatch(filename -> new File(rootDir, filename).isFile() &&
                                            filename.endsWith(".csv"));

使用java 8,您可以验证路径中的任何元素是否为目录: 如果在路径C:\Foo中找到文件夹,则以下实现返回true

String pathString = "C:\\Foo";
Path myPath = Paths.get(pathString);
boolean f = Files.list(myPath).anyMatch(x -> Files.isDirectory(x));
System.out.println(f);

假设路径是您的字符串

File file = new File(path);

boolean exists =      file.exists();      // Check if the file exists
boolean isDirectory = file.isDirectory(); // Check if it's a directory
boolean isFile =      file.isFile();      // Check if it's a regular file
或者您可以使用NIO类文件并检查以下内容:

Path file = new File(path).toPath();

boolean exists =      Files.exists(file);        // Check if the file exists
boolean isDirectory = Files.isDirectory(file);   // Check if it's a directory
boolean isFile =      Files.isRegularFile(file); // Check if it's a regular file

嗯,我认为最好的办法是调用
listFiles()
然后过滤该数组,您可以使用java streams(需要java 8)声明,也可以在for循环中执行
isDirectory
用于检查
File
对象是否为目录,以获得可以使用apache commons IO的扩展名,请参见此处:这可以帮助您:然后您可以检查文件夹中的文件/目录