【问题标题】:How to query list of all directories with images in it, efficiently?如何有效地查询所有包含图像的目录列表?
【发布时间】:2014-12-20 21:38:58
【问题描述】:

我需要查询 MediaStore 并以列表的形式获取所有存储桶名称。这很容易做到,并且在 stackoverflow 上有很多问题的答案,但是所有的答案都存在一个很大的效率问题。他们都查询所有图像以获取图库列表。因此,如果 10 个目录中有数千张图像,那么查询这 10 个目录名称会花费太多时间。我想知道是否有更好的方法来查询这些目录列表而不查询所有图像。

【问题讨论】:

    标签: android gallery mediastore bucket


    【解决方案1】:

    经过实战测试的代码:

    public void collectPhotosInFolder(File directory, boolean recurse, List<File> list) {
        Log.i(Constants.LOG_TAG, "Reading photos in file system folder " + directory.getAbsolutePath());
    
        File[] files = directory.listFiles(new FileFilter() {
            @Override
            public boolean accept(File file) {
                String name = file.getName();
                if (name.contains(".")) {
                    String ext = name.substring(name.lastIndexOf('.') + 1);                 
                    return ((ext.compareToIgnoreCase("jpg") == 0) || (ext.compareToIgnoreCase("jpeg") == 0) || (ext.compareToIgnoreCase("png") == 0));
                }
                return false;
            }
        });
    
        if (files == null)
            files = new File[0];
    
        for (File file : files)
            list.add(file);
    
        if (recurse) {
            File[] dirs = directory.listFiles(new FileFilter() {
                @Override
                public boolean accept(File file) {
                    return file.isDirectory();
                }
            });
    
            for (File dir : dirs)
                collectPhotosInFolder(dir, recurse, list);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-06-27
      • 2018-05-02
      • 2012-09-24
      • 2023-04-07
      • 2011-11-09
      • 2011-09-26
      • 2019-10-12
      • 1970-01-01
      • 2018-08-10
      相关资源
      最近更新 更多