不带参数root.listFiles的这段代码返回所有目录中的所有文件。使用此参数,此代码仅返回扩展名为“ .exe”的文件,但仅返回“ Git”目录中的文件。我应该怎么做才能从所有目录中获取带有扩展名“ .exe”的路径文件列表? 我会尝试在其中插入“ if”:for(File f:list)if(...){...},但不正确。
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
class Filewalker {
static ArrayList<String> arrli = new ArrayList<>();
public void walk(String path) {
File root = new File( path );
File[] list = root.listFiles(new FilenameFilter() {
@Override
public boolean accept(File path, String name) {
return name.endsWith(".exe");
}
});
if (list == null) return;
for ( File f : list ) {
walk(f.getAbsolutePath() );
arrli.add(f.getAbsolutePath());
//System.out.println( "File:" + f.getAbsoluteFile()+"\n" );
}
}
public static void main(String[] args) {
Filewalker fw = new Filewalker();
fw.walk("C:\\Program Files\\Git" );
System.out.println(arrli);
}
}
我修复了递归搜索,但是我不知道应该将文件缩小到扩展名为“ exe”的文件
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
class Filewalker {
static ArrayList<String> arrli = new ArrayList<>();
public void walk(String path) {
File root = new File( path );
File[] list = root.listFiles();
if (list == null) return;
for ( File f :list ) {
if(f.isFile()){
walk(f.getAbsolutePath());
arrli.add(f.getAbsolutePath()); }
else
walk(f.getAbsolutePath());
}
}
public static void main(String[] args) {
Filewalker fw = new Filewalker();
fw.walk("C:\\Program Files\\Git" );
System.out.println(arrli);
}
}