我想在设备上找到所有文件,在我的例子中是pdf' s。现在我写了这段代码:
File images = Environment.getExternalStorageDirectory();
mImagelist = images.listFiles(new FilenameFilter(){
public boolean accept(File dir, String name)
{
return ((name.endsWith(".pdf")));
}
});
此代码只找到一个pdf
/storage/emulated/0/HTC_One_WWE_User_Guide.pdf
。我的下载文件夹中还有其他几个pdf。
我该如何解决这个问题?
答案 0 :(得分:2)
感谢Juan。
public void recursiveScan(File f) {
File[] file = f.listFiles();
for (File ff : file) {
if (ff.isDirectory()) recursiveScan(f);
if (ff.isFile() && ff.getPath().endsWith(".pdf")) {
Log.d("Debug", ff.toString());
}
}
}
您只需要从搜索位置提供File var。
答案 1 :(得分:1)
从外部存储目录获取文件列表,并迭代所述列表。这应该允许您查看扩展名是否与pdf匹配,然后添加到列表或您想要做的任何事情:
File[] file = Environment.getExternalStorageDirectory().listFiles();
for (File f : file){
if (f.isFile() && f.getpath().endswith(".pdf")) {
//Add to your list
}
}
据我所知,这不会进入内部目录,所以你需要将它包装在一个方法中并执行类似if f.isDirectory()
再次调用该方法来遍历文件夹的内容。
public void recursiveScan(File f) {
File[] file = f.listFiles();
for (File f : file){
if (f.isDirectory()) recursiveScan(f);
if (f.isFile() && f.getpath().endswith(".pdf")) {
//Add to your list
}
}
}
其中称为recursiveScan(Environment.getExternalStorageDirectory());
<强>声明:强> 我没有对它进行测试,所以有些东西可能会关闭,但它应该让你大致了解如何去做。