再帰関数を使用して /mnt/sdcard の下のすべてのパスをスキャンし、すべてのファイルが .txt で終わることを確認しましたが、実際の Android フォンで使用すると非常に遅いことがわかりました。スキャン プロセスを高速化する Buffered Input Stream のようなものはありますか?
private txtFileFilter txtff = new txtFileFilter();
private void scanAllTxtFiles(File location, ArrayList<String> list) {
File[] files = location.listFiles(txtff);
if (files != null) {
for (File f : files) {
if (f.isDirectory()) {
scanAllTxtFiles(f, list);
} else if (f.isFile()) {
list.add(f.getAbsolutePath().substring(
externalPathLength));
}
}
}
}
}
private class txtFileFilter implements FileFilter {
@Override
public boolean accept(File pathname) {
// TODO Auto-generated method stub
if (pathname.isFile()
&& pathname.getName().length() >= 4
&& pathname.getName()
.substring(pathname.getName().length() - 4)
.equals(".txt")) {
return true;
} else if (pathname.isDirectory()) {
return true;
}
return false;
}
}