4

我想在设备上找到所有文件,在我的情况下是 pdf。现在我写了这段代码:

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。

我该如何解决这个问题?

4

2 回答 2

7

感谢胡安。

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 从哪里进行搜索。

于 2014-03-27T14:55:11.250 回答
1

从外部存储目录中获取文件列表,并迭代该列表。这应该允许您查看扩展名是否与 pdf 匹配,然后添加到列表或您想做的任何事情:

File[] file = Environment.getExternalStorageDirectory().listFiles(); 
for (File f : file){
   if (f.isFile() && f.getpath().endswith(".pdf")) {
      //Add to your list 
   }
}

据我所知,这不会进入目录,因此您需要将其包装在一个方法中并执行类似 iff.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());

免责声明: 我没有测试过它,所以有些东西可能会关闭,但它应该让你大致了解如何去做。

于 2014-03-14T13:20:54.163 回答