[英]How to get all the filenames in android directory?
我试图列出我的Android模拟器的特定文件夹中的所有文件,而我一直得到空答案。
这是我的代码:
File sdCardRoot = Environment.getExternalStorageDirectory();
File[] file= new File(sdCardRoot+"path");
for (File f : file.listFiles()) {
if (f.isFile())
String name = f.getName();
}
这似乎不起作用,不知道为什么。
我将函数分为两部分,第一个函数获取给定路径中的所有文件,第二个函数从文件数组中获取文件名。
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;
}
更改
File[] file= new File(sdCardRoot+"path");
与
File[] file= new File(sdCardRoot, "path");
并确保目录path
退出
只需检查一下:
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;
由于sdCardRoot
是File
实例,因此sdCardRoot+"path"
将返回与sdCardRoot.toString() + "path"
相同的东西。
但是,调用file.toString()
返回文件名,但不返回绝对路径。 您需要调用sdCardRoot.getAbsolutePath() + "path"
。
另外,请确保已允许仿真器将一定数量的内存用于外部存储。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.