例如,我有一个包含以下文件的目录:
我想知道如何让我的java程序选择并只读取扩展名为.log的文件。
因为文件的名称总是在变化,我想跟踪和读取扩展名为.log的文件。
有什么想法吗?
答案 0 :(得分:0)
试试这个
public boolean accept(File file) {
return file.getName().toLowerCase().endsWidth(".log");
}
答案 1 :(得分:0)
请尝试以下代码:
File file=new File("path.log");
String name=file.toString();
String tok[]=name.split("\\.");
if(tok[tok.length-1].equals("log")){
//compute
}
以上是检查扩展名为log
的核心逻辑。下面的代码是迭代目录并查找扩展名为log
的文件。
File file=new File("C:/Temp/");
String name,tok[];
for(File temp:file.listFiles()){
name=temp.toString();
tok=name.split("\\.");
if(tok[tok.length-1].equals("log")){
//compute
}
}
有关File
访问this链接的更多信息。
答案 2 :(得分:0)
您可以使用简单的正则表达式来匹配文件的扩展名:
if(file.toString().matches(".*\\.log"))
{
//Process the file
}
答案 3 :(得分:0)
我使用Apache Commons IO(WildcardFileFilter)
File dir = new File("/path/to/directory");
FileFilter fileFilter = new WildcardFileFilter("*.log");
File[] files = dir.listFiles(fileFilter);
for (int i = 0; i < files.length; i++)
System.out.println(files[i]); // do something
答案 4 :(得分:0)
请参阅以下代码段
Path path = Paths.get("resources/");
try (DirectoryStream<Path> dirStream = Files.newDirectoryStream(path, "*.{zip,txt}")) {
for (Path entry : dirStream) {
System.out.printf("%-5s: %s%n", "entry", entry.getFileName());
}
} catch (IOException e) {
e.printStackTrace(System.err);
}