我在寻找帮助列出Android外部存储设备中的所有文件。我想在所有文件夹中查找,包括主文件夹的子文件夹。有办法吗?
我已经做了一个基本的,但还没有得到想要的结果。它不起作用。
下面是我的代码:
File[] files_array;
files_array = new File(Environment.getExternalStorageDirectory().getAbsolutePath()).listFiles();
这个方法返回0大小。这是怎么回事?这是我的活动:
public class Main extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
List<File> files = getListFiles(Environment.getExternalStorageDirectory());
setListAdapter(new ArrayAdapter<File>(Main.this, android.R.layout.simple_list_item_1, files));
Toast.makeText(this, "" + files.size(), Toast.LENGTH_LONG).show();
}
private List<File> getListFiles(File parentDir) {
// On first call, parentDir is your sdcard root path
ArrayList<File> inFiles = new ArrayList<File>(); // Initialize an array list to store file names
File[] files = parentDir.listFiles(); // List all files in this directory
for (File file : files) {
if (file.isDirectory()) { // If the file is a directory
inFiles.addAll(getListFiles(file)); // *** Call this recursively to get all lower level files ***
}
}
return inFiles;
}
}
7条答案
按热度按时间kcrjzv8t1#
bqjvbblv2#
以下是在网上找到的解决方案:
实际上,您只需要使用希望从其开始的父目录调用上面的方法。我建议将Environment.getExternalStorageDirectory()放在父目录中,这样它就不会随不同的设备而改变。
lskq00tm3#
从概念上讲,您所做的事情并不完整。您的代码只为根目录提供了一个文件。要确定此目录和子目录中的所有文件,您需要递归调用,以便所有文件都列在文件夹级别的末尾。
现在调用这个函数:
现在,您可以将ArrayList作为源添加到List控件中。
额外好处:如果您希望在树状视图中显示文件列表,我建议您查看https://code.google.com/p/tree-view-list-android/
来源:List all the files from all the folder in a single list
Search all .pdf file present in the Android device
hsgswve44#
试试这个:
java.io
包已在Android中重新实现,您可以在Android中使用与Java中相同的机制。a64a0gku5#
我用这个代码:
只要打电话给 * show * 就可以得到所有名字的列表。
xa9qqrwz6#
我想这会有帮助。首先你需要提取SD卡的内容,如下所示:
现在您已经将
sdcard
中的所有文件和文件夹都保存在了listview
中,无论何时,只要您进入一个文件夹,就需要获取该文件夹的内容,如下所示:再次按下返回键,您需要加载回您以前的文件夹的内容,如下所示:
我想这就是你需要的。
w9apscun7#
前一段时间我写了一个关于这个的教程,现在还在不时地使用这个。看看吧;你可能会找到你需要的东西
playing-with-sdcard-in-android
试试这个:
如果你不想目录被列出,把files.add(file1 [i]); * else * 块中的行: