我想用
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
答案 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());
}
}
}