使用参数:扩展文件递归列出Java中的文件

时间:2019-11-21 17:34:55

标签: java file

不带参数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);
    }

}

0 个答案:

没有答案
相关问题