1

このコードでディレクトリ内のすべてのファイルを含むリストを作成する方法を知っています

String path = "c:/test";
File folder = new File(path);
File[] listOfFiles = folder.listFiles();

しかし、ディレクトリにファイルとサブディレクトリがあり、サブディレクトリにファイルとサブサブディレクトリなどがある場合..

ディレクトリとサブディレクトリ内のすべてのファイルを含むリストを作成するにはどうすればよいですか?

4

2 に答える 2

1

あなたはこのようにすることができます:

protected java.util.List<File> setDirMap(File inputDir) {
    if (!inputDir.isDirectory()) {
        throw new IllegalArgumentException("Input File is not a directory");
    }
    Set<File> ans = new HashSet<File>();
    ans.add(inputDir);
    File[] dir = inputDir.listFiles(new FileFilter() {

        @Override
        /**
         * Returns true if pathname is a directory. False if not
         */
        public boolean accept(File pathname) {

            if (pathname.isDirectory()) {
                return true;
            } else {
                return false;
            }
        }
    });
    ans.addAll(Arrays.asList(dir));
    for (File current : dir) {
        ans.addAll(setDirMap(current));
    }
    return new ArrayList<File>(ans);

}

これにより、すべてのディレクトリとサブディレクトリが返されます。その後、必要なものについて各ディレクトリを確認できます

于 2012-11-25T17:56:48.383 に答える
0

このコードを試してみてください。これは再帰を使用しています....

import java.io.File;
import java.util.ArrayList;

public class FindIt {

    private ArrayList<String> arList = new ArrayList<String>();

    public void find(String s) {

        File f = new File(s);

        File[] fArr = f.listFiles();

        for (File x : fArr) {

            if (x.isFile()) {

                if (x.getName().endsWith(".txt")) {

                    arList.add(x.getName());

                }

                else {

                    continue;
                }

            }

            else {

                find(x.getAbsolutePath());
            }
        }

    }

    public static void main(String[] args) {

        FindIt f = new FindIt();
        f.find("D:\\xtop");

        for (String fileName : f.arList) {

            System.out.println(fileName);
        }
    }

}
于 2012-11-25T18:19:19.160 に答える