如何从JAVA中目录的子文件夹中读取具有特定类型文件的文件

时间:2017-10-31 15:54:21

标签: java file subdirectory

我想询问如何从存在于direcory中的子文件夹中读取带有(.xxx)类型的文件。

我有一个包含子文件夹的文件夹(子文件夹的编号未知)

  C:\MainFolder  
  contains->           [subFolder_A][subFolder_B]......[subFolder_n]

每个subFolder都包含大量文件,但其中一个文件具有不同的类型,特别是(.fingerprint)类型。

       [subFolder_A]  -->  a.txt , atitle.txt  , afin.fingerprint
       [subFolder_B]  -->  b.txt , btitle.txt  , bfin.fingerprint
             ...............................................
       [subFolder_n]  -->  n.txt , ntitle.txt  , nfin.fingerprint

所以我想每次读取一个这样的文件到java ...做一些函数然后下一个函数直到C:\ MainFolder被填充扫描。

如果我将路径直接提供给代码,我可以阅读一个,但如果有人知道用自动方式将它们全部带走,我想要一些提示

        Path path = Paths.get("C:\\MainFolder\\afin.fingerprint");
        byte[] data;
        byte[] fin;
        try {
             this.data = Files.readAllBytes(path);
             byte[] data = Files.readAllBytes(path);
       } catch (Exception e) {....}
          fin=data;

3 个答案:

答案 0 :(得分:3)

你可以walk the file tree recursively with a stream,例如:

 Files.walk(Paths.get("C:/MainFolder"))
      .filter(p -> p.toFile().isFile())
      .filter(p -> p.getFileName().toString().endsWith(".fingerprint"))
      .forEach(p -> process(p));

答案 1 :(得分:1)

您可以像这样遍历子目录:

File directory = new File(//path to directory);
  for(File subdirectory : directory.listFiles()){
    for(File file : Subdirectory.listFiles()){
      if(file.toString().endsWith(".footprint"){
      //doStuff
    }
  }
}

答案 2 :(得分:0)

您可以找到主文件夹的所有子文件夹并在循环中扫描它们。对于每个子文件夹,再次,您可以找到其中的所有文件,然后按照您的意愿过滤它们。 用于列出文件夹使用的内容 https://docs.oracle.com/javase/7/docs/api/java/io/File.html#listFiles()