【发布时间】:2011-05-05 18:21:41
【问题描述】:
我想做一个文件浏览器,它可以做两件事: 1) 允许用户浏览并选择目录 2)允许用户浏览其sdcard上的所有文件
我一直在寻找教程,但似乎找不到任何教程? 有人可以通过解释我的代码需要如何做才能拥有一个简单的文件浏览器或向我提供教程/源代码的链接来帮助我吗?
请,谢谢!
【问题讨论】:
我想做一个文件浏览器,它可以做两件事: 1) 允许用户浏览并选择目录 2)允许用户浏览其sdcard上的所有文件
我一直在寻找教程,但似乎找不到任何教程? 有人可以通过解释我的代码需要如何做才能拥有一个简单的文件浏览器或向我提供教程/源代码的链接来帮助我吗?
请,谢谢!
【问题讨论】:
如果您实际上对学习编写自己的代码更感兴趣,我建议您仔细阅读File 类文档。这就是你要做大部分工作的地方。
对于 Android 的 SD 卡/其他外部存储,您需要先检查以确保外部存储已安装且可用,然后再尝试使用 Environment 类进行读取:
String extState = Environment.getExternalStorageState();
//you may also want to add (...|| Environment.MEDIA_MOUNTED_READ_ONLY)
//if you are only interested in reading the filesystem
if(!extState.equals(Environment.MEDIA_MOUNTED)) {
//handle error here
}
else {
//do your file work here
}
一旦您确定了外部存储的正确状态,一个简单的开始方法是使用 File 的 listFiles() 方法,如下所示:
//there is also getRootDirectory(), getDataDirectory(), etc. in the docs
File sd = Environment.getExternalStorageDirectory();
//This will return an array with all the Files (directories and files)
//in the external storage folder
File[] sdDirList = sd.listFiles();
然后您可以开始使用 FileFilters 来缩小结果范围:
FileFilter filterDirectoriesOnly = new FileFilter() {
public boolean accept(File file) {
return file.isDirectory();
}
};
File[] sdDirectories = sd.listFiles(filterDirectoriesOnly);
从那里开始,只需通读文档以找到您希望用它做的事情的类型,然后您就可以将它们绑定到列表适配器等中。
希望这会有所帮助!
【讨论】:
sdDirectories[1].getAbsolutePath())。
这是一个较晚的答案,但我最近致力于创建一个 android 文件资源管理器。 https://github.com/mburman/Android-File-Explore
它真的很简单。本质上,它只是您需要集成到应用程序中的 1 个文件。
【讨论】:
看看OI File Manager,它是一个开源的Android 文件管理器。可以获取源代码here。
【讨论】: