如何获取文件夹的内容并放入ArrayList

时间:2011-09-04 19:56:34

标签: java file

我想用

File f = new File("C:\\");

使用文件夹的内容创建一个ArrayList。

我对缓冲读者不是很好,所以请告诉我这是否更好。

这是我到目前为止的代码:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;


public class buffered_read {
public static void main(String[] args) {
    File f = new File("C:\\");
    int x = 0;
    boolean b = true;
    File list[];
    while(b = true){

    }
}
}

谢谢, obiedog

5 个答案:

答案 0 :(得分:70)

最简单的方法是:

File f = new File("C:\\");
ArrayList<File> files = new ArrayList<File>(Arrays.asList(f.listFiles()));

如果你想要的是一个名单:

File f = new File("C:\\");
ArrayList<String> names = new ArrayList<String>(Arrays.asList(f.list()));

答案 1 :(得分:28)

你有read the API documentation for java.io.File吗?

File f = new File("C:\\");
File[] list = f.listFiles();

答案 2 :(得分:4)

File-class提供listFiles()-method,返回File - 当前文件夹中所有文件的数组。

要制作它们的ArrayList,您可以使用Arrays-class并使用asList()-method。请参阅here

如果您只需要文件名或路径作为字符串,那么还有一个list()-method返回一个字符串数组。要将数组转换为ArrayList,请按照链接问题中所示的步骤进行操作。

答案 3 :(得分:2)

Streams很快且非常容易阅读:

final Path rootPath = Paths.get("/tmp");

// All entries Path objects
ArrayList<Path> all = Files
        .list(rootPath)
        .collect(Collectors.toCollection(ArrayList::new));

// Only regular files at Path objects
ArrayList<Path> regularFilePaths = Files
        .list(rootPath)
        .filter(Files::isRegularFile)
        .collect(Collectors.toCollection(ArrayList::new));

// Only regular files as String paths
ArrayList<String> regularPathsAsString = Files
        .list(rootPath)
        .filter(Files::isRegularFile)
        .map(Path::toString)
        .collect(Collectors.toCollection(ArrayList::new));

答案 4 :(得分:0)

如果要递归检索所有文件,可以执行以下操作

public class FileLister {

    static List<String> fileList = new ArrayList<String>();

    public static void main(String[] args) {
        File file = new File("C:\\tmp");
        listDirectory(file);
        System.out.println(fileList);
    }

    public static void listDirectory(File file) {
        if(file.isDirectory()) {
            File[] files = file.listFiles();
            for(File currFile : files) {
                listDirectory(currFile);
            }
        }
        else {
            fileList.add(file.getPath());
        }
    }
}