【问题标题】:list up all files with a certain extension on a device列出设备上具有特定扩展名的所有文件
【发布时间】:2014-03-14 13:17:23
【问题描述】:

我想在设备上查找所有文件,在我的例子中是 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。

我该如何解决这个问题?

【问题讨论】:

    标签: android android-file android-external-storage


    【解决方案1】:

    感谢胡安。

    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。

    【讨论】:

    • 为什么这么糟糕的命名?为什么不打电话给file -> files,因为它是listFiles()?为什么不调用ff -> file,因为它是一个文件?
    • 我在本地重命名了所有内容,然后只是为了测试它是否正常工作。
    • 我仍然赞成,但这些名字让我失望。您应该更新答案以使其他人更清楚。 :)
    【解决方案2】:

    从外部存储目录中获取文件列表,并迭代该列表。这应该允许您查看扩展名是否与 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());

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

    【讨论】:

      猜你喜欢
      • 2011-09-25
      • 2013-09-20
      • 2018-04-27
      • 2019-06-14
      • 1970-01-01
      • 1970-01-01
      • 2020-02-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多