Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用PathMatcher获取特定扩展名的文件_Java_File Extension - Fatal编程技术网

Java 使用PathMatcher获取特定扩展名的文件

Java 使用PathMatcher获取特定扩展名的文件,java,file-extension,Java,File Extension,我想从一个目录(而不是它的子目录)获取所有*.pdf文件。我使用FileSystems.getDefault().getPathMatcher(“glob:*.pdf”),但它是递归工作的 编辑 我已经尝试过FileSystems.getDefault().getPathMatcher(“glob:.pdf”),但这不会给我任何文件(但给定目录中有*.pdf文件)。问题在于使用全局模式 使用FileSystems.getDefault().getPathMatcher(“glob:*.pdf”)

我想从一个目录(而不是它的子目录)获取所有*.pdf文件。我使用
FileSystems.getDefault().getPathMatcher(“glob:*.pdf”)
,但它是递归工作的

编辑


我已经尝试过
FileSystems.getDefault().getPathMatcher(“glob:.pdf”)
,但这不会给我任何文件(但给定目录中有*.pdf文件)。

问题在于使用
全局模式

使用
FileSystems.getDefault().getPathMatcher(“glob:*.pdf”)
而不是
FileSystems.getDefault().getPathMatcher(“glob:*.pdf”)

以下摘录自:

以下规则用于解释全局模式:

  • *字符匹配名称组件的零个或多个字符,而不跨越目录边界
  • **字符与跨越目录边界的零个或多个字符相匹配
从文档中:

*.java
匹配表示以.java结尾的文件名的路径

因此,
glob:.java
的路径匹配器只会为实际文件名(例如,
x.pdf
)返回true,例如

对于在没有子目录的目录中迭代PDF文件的问题,可能的解决方案是限制文件树遍历的深度,而不是更改匹配器的行为

Path start = Paths.get("C:/Users/maxim/Desktop/test/");
PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:**.pdf");
Files.walk(start, 1)
    .filter(matcher::matches)
    .forEach(System.out::println);

我已经这样做了。当我的目录中有*.pdf文件时,它不会给我任何文件。非常感谢!就是这样。