2017-11-18 11 views
1

以下のコードを使用して、私はrecycledviewで削除された写真を表示することができました。削除された写真がrecyclerviewに表示される

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM); 

とArrayListのは::

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; 
} 

ファイルがあった場所

new ArrayList<File> 

私はギャラリーアプリで見ることができる12枚の写真を見て期待していたが、私数ヶ月前に削除された写真(ギャラリーアプリで見ることができる写真に加えて)を見た。削除した動画のサムネイルも見ました。コンピュータがファイルをどのように削除するかについての私の現在の理解は、OSがファイルを削除済みとしてマークし、新しいファイルにスペースが必要なときに、ファイルを上書きします。しかし、録画してから数か月の間に削除されたビデオクリップの数を考慮すると、それは合理的な説明のようではありません(そのうちのいくつかは3 GBほどになることがあります)。誰かが私に説明して、アンドロイドがファイルを削除する方法を説明することはできますか?(または私が読むための参照を提供しています。私は数時間GoogleとS/Oを探していました。

+0

Android Studioで 'adb shell'を使用するかデバイスファイルエクスプローラを使用して'/sdcard/DCIM/'や'/storage/emulated/0/DCIM/'を見ると、あなたはこれらのファイルを見ますか? – CommonsWare

+0

私は/ storage/emulated/0/DCIM/ –

+0

を参照してください。そこにはあなたの質問に参照しているファイルがありますか?あなたのコードは、あなたの質問に従って、このディレクトリのコンテンツの再帰的なトラバースを行っています。 – CommonsWare

答えて

0

MacOS、Linux、Android、およびその他のオペレーティングシステムでは、一定の種類のアプリケーションで先頭に.のディレクトリを無視するという規則があります。あなたのファイルマネージャーはこれをやっています。あなたのギャラリーがおそらく—を使用しているMediaStore —がこれを実行しています。あなたのコードはそうではありません。 adb shellまたはデバイスファイルエクスプローラもありません。そのため、これらのツールを使用することをお勧めします。

一般的に、デバイス上のイメージの名簿を取得する正しい方法は、MediaStoreを照会することです。あなたの既存のコードに固執する場合

しかし、あなたのオプションは次のとおりです。

    結果とライブ
  • 、または
  • があれば、ディレクトリ名が始まる場合.を確認するために、知性に追加しますそれはスキップします
+0

サムネイルを削除するために私はすでに条件付きに追加していましたが、私はこのMediaStoreを調べます。 –

関連する問題