Android: 如何将一个目录下的所有文件列表到一个数组中?
Android: How to list all the files in a directory in to an array?
我有一个变量"directorypath"。它具有 SD 卡中目录的路径。
Ex: "sdcard/images/scenes"
现在,我想列出 "directorypath" 中的所有文件,并想要一个数组来存储其中的所有文件名。
Ex: Array[0]= Filename1, Array[1]= Filename2 Etc...
我试过 Array[] myArray = directorypath.listfile();
之类的东西,但没用..!
任何人都可以给我代码或至少帮助我吗?非常感激。
试试下面的代码可能对你有帮助
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 {
inFiles.add(file);
}
}
return inFiles;
}
这将 return 您指定目录下的文件列表。
从列表中的文件对象..您将获得有关所需文件的所有信息。
我认为您遇到的问题与外部存储目录文件路径有关。如果可以访问环境,请不要将整个路径用作变量。
String path = Environment.getExternalStorageDirectory().toString()+"/images/scenes";
此外,您可以将 API listfiles() 与文件对象一起使用,它会起作用。例如:::
File f = new File(path);
File file[] = f.listFiles();
根据您的错误消息 "Cannot resolve listFiles()",您正在尝试调用 String object, when you actually want to be calling that on a File 对象上的方法。
创建一个新的文件对象,
String parentDirectory = "path/to/files";
File dirFileObj = new File(parentDirectory);
File[] files = dirFileObj.listFiles();
我确实是在为不正确的数据类型调用函数。即,listfiles() 不适用于 String 类型变量..!!
所以,我创建了一个 File 类型变量和一个 File[] 数组来传递文件列表..!
这解决了问题。
很简单就两行代码
File mListofFiles = new File(Environment.getExternalStorageDirectory.getAbsolutePath()+"/",childpath:Foldername);
File f = new File(mListofFiles.toString());
File file[] = f.listFiles();
试试下面的代码:
File externalStorageDirectory = Environment.getExternalStorageDirectory();
File folder = new File(externalStorageDirectory.getAbsolutePath() + "/FilePath");
File file[] = folder.listFiles();
if (file.length != 0) {
for (int i = 0; i < file.length; i++) {
//here populate your list
}
} else {
//no file available
}
我有一个变量"directorypath"。它具有 SD 卡中目录的路径。
Ex: "sdcard/images/scenes"
现在,我想列出 "directorypath" 中的所有文件,并想要一个数组来存储其中的所有文件名。
Ex: Array[0]= Filename1, Array[1]= Filename2 Etc...
我试过 Array[] myArray = directorypath.listfile();
之类的东西,但没用..!
任何人都可以给我代码或至少帮助我吗?非常感激。
试试下面的代码可能对你有帮助
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 {
inFiles.add(file);
}
}
return inFiles;
}
这将 return 您指定目录下的文件列表。
从列表中的文件对象..您将获得有关所需文件的所有信息。
我认为您遇到的问题与外部存储目录文件路径有关。如果可以访问环境,请不要将整个路径用作变量。
String path = Environment.getExternalStorageDirectory().toString()+"/images/scenes";
此外,您可以将 API listfiles() 与文件对象一起使用,它会起作用。例如:::
File f = new File(path);
File file[] = f.listFiles();
根据您的错误消息 "Cannot resolve listFiles()",您正在尝试调用 String object, when you actually want to be calling that on a File 对象上的方法。
创建一个新的文件对象,
String parentDirectory = "path/to/files";
File dirFileObj = new File(parentDirectory);
File[] files = dirFileObj.listFiles();
我确实是在为不正确的数据类型调用函数。即,listfiles() 不适用于 String 类型变量..!!
所以,我创建了一个 File 类型变量和一个 File[] 数组来传递文件列表..! 这解决了问题。
很简单就两行代码
File mListofFiles = new File(Environment.getExternalStorageDirectory.getAbsolutePath()+"/",childpath:Foldername);
File f = new File(mListofFiles.toString());
File file[] = f.listFiles();
试试下面的代码:
File externalStorageDirectory = Environment.getExternalStorageDirectory();
File folder = new File(externalStorageDirectory.getAbsolutePath() + "/FilePath");
File file[] = folder.listFiles();
if (file.length != 0) {
for (int i = 0; i < file.length; i++) {
//here populate your list
}
} else {
//no file available
}