Подтвердить что ты не робот

Как получить содержимое папки и поместить в ArrayList

Я хочу использовать

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

4b9b3361

Ответ 1

Самый простой способ сделать это:

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()));

Ответ 3

File -class предлагает listFiles() -method, который возвращает File -array всех файлов в текущей папке.

Чтобы создать ArrayList из них, вы можете использовать Arrays -class и asList() -method. См. здесь.

Если вам нужны только имена файлов или пути как строки, существует также list() -method, который возвращает строку String- массив. Чтобы преобразовать массив в ArrayList, выполните шаги, указанные в связанном вопросе.

Ответ 4

Потоки быстро и очень легко читаются:

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));