我试图列出我的Android模拟器的特定文件夹中的所有文件,并且我一直得到空答案。
继承我的代码:
File sdCardRoot = Environment.getExternalStorageDirectory();
File[] file= new File(sdCardRoot+"path");
for (File f : file.listFiles()) {
if (f.isFile())
String name = f.getName();
}
这似乎不起作用,不知道为什么。
答案 0 :(得分:8)
我将函数拆分为两部分,第一个函数获取给定路径中的所有文件,第二个函数从文件数组中获取文件名。
public File[] GetFiles(String DirectoryPath) {
File f = new File(DirectoryPath);
f.mkdirs();
File[] file = f.listFiles();
return file;
}
public ArrayList<String> getFileNames(File[] file){
ArrayList<String> arrayFiles = new ArrayList<String>();
if (file.length == 0)
return null;
else {
for (int i=0; i<file.length; i++)
arrayFiles.add(file[i].getName());
}
return arrayFiles;
}
答案 1 :(得分:2)
更改
File[] file= new File(sdCardRoot+"path");
带
File[] file= new File(sdCardRoot, "path");
并确保目录path
退出
答案 2 :(得分:0)
请检查一下:
List<File> files = getListFiles(new File("YOUR ROOT"));
private List<File> getListFiles(File parentDir) {
ArrayList<File> inFiles = new ArrayList<File>();
File[] files = parentDir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
inFiles.addAll(getListFiles(file));
} else {
if(file.getName().endsWith(".csv")) {
inFiles.add(file);
}
}
}
return inFiles;
答案 3 :(得分:0)
由于sdCardRoot
是File
的实例,sdCardRoot+"path"
将返回与sdCardRoot.toString() + "path"
相同的内容。
但是,调用file.toString()
会返回文件名,但不会返回绝对路径。您需要致电sdCardRoot.getAbsolutePath() + "path"
。
此外,请确保您已允许模拟器使用一定量的内存进行外部存储。