已删除的照片显示在recyclerview中

时间:2017-11-18 21:28:53

标签: android

使用下面的代码,我能够在Recyclerview中显示(假设为)已删除的照片。

public ArrayList<File> listf(File xfile, ArrayList<File> files) {


    // get all the files from a directory
    File[] fList = xfile.listFiles();
    for (File file : fList) {
        if (file.isFile()) {
            files.add(file);
        } else if (file.isDirectory()) {
            listf(file, files);
        }
    }
    return files;
}

文件是:

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);

并且ArrayList是:

new ArrayList<File>

我期待看到可以在图库应用中看到的12张图片,但我看到几个月前删除的图片(除了可以在图库应用中看到的图片)。我还看到了已删除视频的缩略图。我目前对计算机如何删除文件的理解是操作系统将文件标记为已删除,最后在新文件需要空间时覆盖它们。然而,考虑到我录制的视频剪辑的数量并且随后在几个月内删除(其中一些可能大到3 GB),这似乎不是一个合理的解释。有人可以向我解释一下android如何删除文件(或者为我提供阅读的参考资料,我一直在google和S / O上寻找好几个小时并且找不到任何有用的东西)?

1 个答案:

答案 0 :(得分:0)

在macOS,Linux,Android和其他一些操作系统中,一种惯例是某些类型的应用程序忽略具有前导.的目录。你的文件管理器正在这样做。你的画廊最有可能使用的MediaStore就是这样做的。你的代码不是。 adb shell或设备文件浏览器也不是,这就是我建议您使用这些工具的原因。

通常,在设备上获取图像名单的正确方法是查询MediaStore

但是,如果您想坚持使用现有代码,那么您的选择是:

  • 与结果一起生活,或
  • 添加智能以查看目录名称是否以.开头,如果是,则跳过它