7
A
回答
16
传递一个FileFilter
(编码这里anonymously)我n要在DIR File
的listFiles()
方法,像这样:
File dir = new File("some/path/to/dir");
final String id = "XXX"; // needs to be final so the anonymous class can use it
File[] matchingFiles = dir.listFiles(new FileFilter() {
public boolean accept(File pathname) {
return pathname.getName().equals("a_id_" + id + ".zip");
}
});
捆绑作为一种方法,它看起来像:
public static File[] findFilesForId(File dir, final String id) {
return dir.listFiles(new FileFilter() {
public boolean accept(File pathname) {
return pathname.getName().equals("a_id_" + id + ".zip");
}
});
}
,哪些是你可以调用,如:
File[] matchingFiles = findFilesForId(new File("some/path/to/dir"), "XXX");
或简单地检查它是否存在,
boolean exists = findFilesForId(new File("some/path/to/dir"), "XXX").length > 0
0
4
我创建了a_id_123.zip,a_id_124.zip,a_id_125.zip命名zip文件,a_id_126.zip 它看起来像工作正常,但我不知道,如果它是你正确的答案。 输出将是以下如果存在发现a_id_123.zip发现a_id_124.zip
- 上面列出的文件中发现a_id_125.zip发现a_id_126.zip
public static void main(String[] args) { String pathToScan = "."; String fileThatYouWantToFilter; File folderToScan = new File(pathToScan); // import -> import java.io.File; File[] listOfFiles = folderToScan.listFiles(); for (int i = 0; i < listOfFiles.length; i++) { if (listOfFiles[i].isFile()) { fileThatYouWantToFilter = listOfFiles[i].getName(); if (fileThatYouWantToFilter.startsWith("a_id_") && fileThatYouWantToFilter.endsWith(".zip")) { System.out.println("found" + " " + fileThatYouWantToFilter); } } } }
1
您可以使用Apache WildCardFileFilter
0
的Java 7的模式匹配(和PathMatcher)和递归目录行走一些很好的支持(Files.walkFileTree())。在原来的问题的背景下,这一页Oracle的Java文档中是一个良好的开端:
查找文件:http://docs.oracle.com/javase/tutorial/essential/io/find.html
1
该解决方案推广了波希米亚的答案。它使用正则表达式,并用Java 8 lambda表达式替换内部类。感谢@Bohemian的原始实施。
import java.io.File;
public class FileFinder {
public static void main(String[] args){
File directory = new File("D:\\tmp");
String id = "20140430104033";
for (File f : findFilenamesWithId(id, directory)){
System.out.println(f.getAbsoluteFile());
}
}
/** Finds files in the specified directory whose names are formatted
as "a_id_ID.zip" */
public static File[] findFilenamesWithId(String ID, File dir) {
return findFilenamesMatchingRegex("^a_id_" + ID + "\\.zip$", dir);
}
/** Finds files in the specified directory whose names match regex */
public static File[] findFilenamesMatchingRegex(String regex, File dir) {
return dir.listFiles(file -> file.getName().matches(regex));
}
}
相关问题
- 1. 如何检查文件名是否匹配通配符模式?
- 2. 如何检查一个文件是否存在于JavaScript中?
- 3. 如何检查是否一个目录,目录名通配符存在?
- 4. 检查java中是否存在字符
- 5. 如何检查莲花配方中是否存在文件?
- 6. 检查文件是否存在于带有通配符的hdfs中
- 7. 检查文件是否存在与外壳脚本中的通配符
- 8. 如何检查文件是否存在?
- 9. 如何检查文件是否存在?
- 10. 用通配符检查Perl中的目录是否存在
- 11. 如何检查一个类是否存在于java项目中?
- 12. PHP - 检查一个文件夹中是否存在文件
- 13. 使用ls和通配符检查s3中是否存在文件
- 14. 如何检查一个文件夹是否存在使用PHP
- 15. 检查一个文件是否存在于Python中的HDFS中
- 16. Java:检查符号链接文件是否存在
- 17. java如何检查文件是否存在并打开它?
- 18. 在Java中如何检查文件中的下一个记录是否结束?
- 19. 如何通过bash脚本检查文件是否存在?
- 20. 检查unix中是否存在另一个文件中的字符串
- 21. 如何检查文件是否存在于war文件中?
- 22. 如何检查chm文件中是否存在子文件?
- 23. 如何检查文件夹中是否已存在文件
- 24. 写一个文件,并检查文件是否存在
- 25. 检查JList中是否存在文件
- 26. 检查文件中是否存在行
- 27. 如何通过FTP检查远程文件夹中是否存在文件?
- 28. 如何检查一个目录中是否存在多个文件
- 29. 检查Ant中是否存在“至少一个文件”
- 30. 如何检查Firebase存储中是否存在文件?
链接断开.. – Fabi755 2016-12-08 11:55:17