如何在Android中递归扫描目录并显示文件名?我正在尝试扫描,但速度很慢(强制关闭或等待)。我正在使用FileWalker
课程,在单独的答案to this question中给出。如何在Android中递归扫描目录
2
A
回答
13
您几乎总是只能从非UI线程访问文件系统。否则,您可能会长时间阻塞UI线程并获取ANR。在AsyncTask
的doInBackground()
中运行FileWalker。
这是FileWalker的一个稍微优化版本:
public class Filewalker {
public void walk(File root) {
File[] list = root.listFiles();
for (File f : list) {
if (f.isDirectory()) {
Log.d("", "Dir: " + f.getAbsoluteFile());
walk(f);
}
else {
Log.d("", "File: " + f.getAbsoluteFile());
}
}
}
}
您可以从后台线程调用它是这样的:
Filewalker fw = new Filewalker();
fw.walk(context.getFilesDir());
0
System.out.println
调用真的很慢(嗯,它不是真正的函数本身,而是底层PrintStream,它需要花费大量时间在控制台中编写文本)。
用别的东西代替它们,它应该没问题。例如,您可以创建并返回包含文件名的数组。
相关问题
- 1. 递归扫描bash中的目录
- 2. 递归扫描目录和子目录通过FTP与PHP
- 3. 扫描目录C++
- 4. 如何在sonarqube中递归扫描代码
- 5. 有CMake递归扫描文件夹?
- 6. AS3递归对象扫描无重复?
- 7. 递归扫描DOM元素 - 使用Javascript
- 8. 远程目录扫描
- 9. 使用javascript扫描目录
- 10. 如何在java中扫描不同目录中的文件?
- 11. 如何在android中扫描QR码
- 12. 扫描目录中的文件 - MATLAB
- 13. 在android中扫描Maxicode?
- 14. 如何在登录后扫描页面
- 15. C中的递归目录
- 16. Python:如何在开始时关闭对lib目录的扫描
- 17. 扫描目录和子目录中的文件
- 18. 如何递归安装目录与WAF
- 19. 如何递归移除目录?
- 20. 如何扫描声纳扫描仪
- 21. C++多线程目录扫描代码
- 22. 扫描目录时发生java.lang.NullPointerException
- 23. Netbeans扫描符号链接目录
- 24. 强制Eclipse不扫描目录
- 25. SonarQube扫描文件/目录排除
- 26. 使用scandir扫描根目录
- 27. 目录扫描仪Windows服务与FileSystemWatcher
- 28. 停止某个目录的MediaScanner扫描
- 29. 在PowerShell中递归列出目录
- 30. 在Matlab中递归列出目录
谢谢!我会试试看! – INCOGNITO 2012-07-14 09:04:39
原谅我的天真的问题,但在这里如何分配上下文?我通常将它作为参数传递给一个函数,但我在这里看不到任何参数?没有,上下文给我一个'无法解决'编译错误。 – biscuitstack 2016-07-11 11:19:14
@biscuitstack你可以使用'Activity'或'Application'的实例作为['Context'](https://developer.android.com/reference/android/content/Context.html)。 – 2016-07-11 13:18:40