java - Java - 如何访问只包含部分文件名的文件?

127 1

我试图实例化一个文件变量,但是只知道文件名的一部分,这有可能吗?

时间: 原作者:

107 5

如果你知道它在什么目录,那么可以做到,你可以使用FileFilter


final String prefix ="pass_231_"


File dir = ... ;


File[] candidates = dir.listFiles(new FileFilter() {


 @Override


 public boolean accept(File pathname) {


 return pathname.getName().startsWith(prefix);


 }


});


// candidates will contain all files starting with"pass_231_"



如果你需要递归搜索(包括子文件夹),你可以执行以下操作:


String prefix ="pass_231_";


File dir = ... ;


List<File> candidates = new ArrayList<File>();


searchRecursively(dir, prefix, candidates);


// candidates will contain all files starting with"pass_231_"



然后searchRecursively看起来像这样:


public static void searchRecursively(File dir, final String prefix, List<File> candidates) {


 File[] matches = dir.listFiles(new FileFilter() {


 @Override


 public boolean accept(File pathname) {


 return pathname.getName().startsWith(prefix);


 }


 });


 candidates.addAll(Arrays.asList(matches));


 File[] subdirs = dir.listFiles(new FileFilter() {


 @Override


 public boolean accept(File pathname) {


 return pathname.isDirectory();


 }


 });


 for (File subdir : subdirs) {


 searchRecursively(subdir, prefix, candidates);


 }


}



原作者:
126 4

尝试在包含文件的目录中使用File.listFiles(filter)方法,更多信息在这里 。

原作者:
122 5

你可以列出文件夹中的所有文件,然后,只要过滤出完整的名称,就打开文件。

查看File.list() 方法。

原作者:
65 1

必须对文件夹进行筛选,但是,如果过滤器返回多个文件,则必须决定哪个文件打开。

原作者:
127 0


 List<String> list = Files.walk(path)


 .map((q) -> q.getFileName().toString())


 .filter((s) -> s.contains("2019-05-25"))


 .collect(Collectors.toList());



 if(list.size() == 1){


 System.out.println("your file is" + list.get(0));


 } else {


 System.out.println("there are more than one file");


 }



原作者:
...