如何从目录中只读取具有特定扩展名的文件

时间:2014-10-28 07:07:51

标签: java

例如,我有一个包含以下文件的目录:

  1. test.log
  2. 的test.html
  3. 的test.txt
  4. 我想知道如何让我的java程序选择并只读取扩展名为.log的文件。

    因为文件的名称总是在变化,我想跟踪和读取扩展名为.log的文件。

    有什么想法吗?

5 个答案:

答案 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);
    }

有关详细信息,请查看此完整示例: https://github.com/jugsaar/jugsaar-meeting-9/blob/master/talks/java-nio2/src/main/java/de/jugsaar/meeting9/nio2/directorystream/DirectoryStreamGlobbingPatternDemo.java