我想询问如何从存在于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;
答案 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()