Как получить содержимое папки и поместить в 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
Ответы
Ответ 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()));
Ответ 2
Вы читаете документацию по API для java.io.File
?
File f = new File("C:\\");
File[] list = f.listFiles();
Ответ 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));