Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用给定的模式从目录和子目录获取所有文件_Java_File_Properties_Path_Dir - Fatal编程技术网

Java 如何使用给定的模式从目录和子目录获取所有文件

Java 如何使用给定的模式从目录和子目录获取所有文件,java,file,properties,path,dir,Java,File,Properties,Path,Dir,我有一个包含子目录的目录,每个目录都有一个名为 *.物业 我想用java搜索这些文件 谢谢您可以递归调用此方法 File dir = new File("C:/"); File [] files = dir.listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { return name.endsWith(".properties"); } }

我有一个包含子目录的目录,每个目录都有一个名为 *.物业

我想用java搜索这些文件


谢谢

您可以递归调用此方法

File dir = new File("C:/");
File [] files = dir.listFiles(new FilenameFilter() {
    @Override
    public boolean accept(File dir, String name) {
    return name.endsWith(".properties");
    }
});
或者,您也可以使用Java 7方法和所述的过滤器。

请参阅Java教程:

您是否需要创建一个递归访问文件树中所有文件的应用程序?也许您需要删除树中的每个.class文件,或者查找去年未访问过的每个文件。您可以使用FileVisitor界面执行此操作

具体请参见示例:

import java.io.*;
导入java.nio.file.*;
导入java.nio.file.attribute.*;
导入静态java.nio.file.FileVisitResult.*;
导入静态java.nio.file.FileVisitOption.*;
导入java.util.*;
/**
*查找以下文件的示例代码:
*匹配指定的全局模式。
*更多关于什么的信息
*构成全局模式,请参见
* http://docs.oracle.com/javase/javatutorials/tutorial/essential/io/fileOps.html#glob
*
*匹配的文件或目录
*图案被印在纸上
*标准输出。人数
*火柴也会打印出来。
*
*执行此应用程序时,
*你必须把地球仪的图案
*在引号中,因此shell不会
*展开所有通配符:
*java查找-名称“*.java”
*/
公共类查找{
/**
*查找的{@code FileVisitor}
*所有与
*指定的模式。
*/
公共静态类查找器
扩展SimpleFileVisitor{
私有最终路径匹配器匹配器;
私有整数匹配=0;
查找器(字符串模式){
matcher=FileSystems.getDefault()
.getPathMatcher(“全局:+模式);
}
//将glob模式与
//文件或目录名。
无效查找(路径文件){
路径名=file.getFileName();
if(name!=null&&matcher.matches(name)){
numMatches++;
System.out.println(文件);
}
}
//打印的总数量
//匹配到标准输出。
作废完成(){
System.out.println(“匹配:”
+numMatches);
}
//调用模式匹配
//方法在每个文件上。
@凌驾
公共文件VisitResult visitFile(路径文件,
基本文件属性(属性属性){
查找(文件);
继续返回;
}
//调用模式匹配
//方法在每个目录上。
@凌驾
公共文件VisitResult preVisitDirectory(路径目录,
基本文件属性(属性属性){
查找(目录);
继续返回;
}
@凌驾
公共文件VisitResult visitFileFailed(路径文件,
IOEXC(例外情况){
系统错误打印项次(exc);
继续返回;
}
}
静态void用法(){
System.err.println(“java查找”+
“-name\”\”);
系统退出(-1);
}
公共静态void main(字符串[]args)
抛出IOException{
if(args.length<3 | |!args[1]。等于(“-name”))
用法();
Path startingDir=Path.get(args[0]);
字符串模式=args[2];
查找器=新查找器(模式);
walkFileTree(startingDir,finder);
finder.done();
}
}

除其他答案外:

番石榴(自v15起):

公地IO:

for (File f : FileUtils.listFiles(rootDir, fileFilter, dirFilter)) {
    // process
}
Java 7:

Files.walkFileTree(rootDir, fileVisitor);
你可能想读书
for (File f : FileUtils.listFiles(rootDir, fileFilter, dirFilter)) {
    // process
}
Files.walkFileTree(rootDir, fileVisitor);