如何递归扫描Android中的目录并显示文件名?我正在尝试扫描,但速度很慢(强制关闭或等待)。我使用的FileWalker类在单独的答案to this question中给出。
FileWalker
3bygqnnd1#
您应该总是只从非UI线程访问文件系统,否则可能会长时间阻塞UI线程并获得ANR。在AsyncTask的doInBackground()中运行FileWalker。这是一个稍微优化的FileWalker版本:
AsyncTask
doInBackground()
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());
o4tp2gmn2#
System.out.println调用真的很慢(其实不是函数本身,而是底层的PrintStream,它需要大量时间在控制台中写入文本)。用别的东西替换它们应该没问题。例如,你可以创建并返回一个包含文件名的数组。
System.out.println
2条答案
按热度按时间3bygqnnd1#
您应该总是只从非UI线程访问文件系统,否则可能会长时间阻塞UI线程并获得ANR。在
AsyncTask
的doInBackground()
中运行FileWalker。这是一个稍微优化的FileWalker版本:
您可以从后台线程调用它,如下所示:
o4tp2gmn2#
System.out.println
调用真的很慢(其实不是函数本身,而是底层的PrintStream,它需要大量时间在控制台中写入文本)。用别的东西替换它们应该没问题。例如,你可以创建并返回一个包含文件名的数组。