2010-12-30 20 views
12


私はいくつかのファイルを含むsdカード内のフォルダを持っています。 今、私はそのファイルの名前を取得する必要があります。 誰でもどのようにsdカードに保存されているファイル名を取得する任意のアイデアを持っていることができますか?androidのsdカードに保存されているファイル名を取得する方法

助けに感謝します。 ありがとうございました。

答えて

24

Environment.getExternalStorageDirectoryは、SDCARDに対応するFileを提供します。次に、Fileメソッドを使用するだけです。

File sdCardRoot = Environment.getExternalStorageDirectory(); 
File yourDir = new File(sdCardRoot, "yourpath"); 
for (File f : yourDir.listFiles()) { 
    if (f.isFile()) 
     String name = f.getName(); 
     // make something with the name 
} 

アドバイスの少し注:上記のキットカットとから、これはREAD_EXTERNAL_STORAGE許可を必要とするようなものでなければなりません

+0

よろしくお願いいたします。 – sajjoo

+0

'list()'と 'listFiles()'の2つのメソッドのソースコードを確認しましたか?それらの間には少し違いがあります。どのような違いがあるのか​​知ることは興味深い。 –

+0

@Martjin:内部的に、 'listFiles'はlistを使用してファイル名のリストを作成し、' File'オブジェクトを作成します。しかし、OPはファイルだけを持っていたので、私は 'listFiles'を使うことを好みました。 –

2
/** 
* Return list of files from path. <FileName, FilePath> 
* 
* @param path - The path to directory with images 
* @return Files name and path all files in a directory, that have ext = "jpeg", "jpg","png", "bmp", "gif" 
*/ 
private List<String> getListOfFiles(String path) { 

    File files = new File(path); 

    FileFilter filter = new FileFilter() { 

     private final List<String> exts = Arrays.asList("jpeg", "jpg", 
       "png", "bmp", "gif"); 

     @Override 
     public boolean accept(File pathname) { 
      String ext; 
      String path = pathname.getPath(); 
      ext = path.substring(path.lastIndexOf(".") + 1); 
      return exts.contains(ext); 
     } 
    }; 

    final File [] filesFound = files.listFiles(filter); 
    List<String> list = new ArrayList<String>(); 
    if (filesFound != null && filesFound.length > 0) { 
     for (File file : filesFound) { 
      list.add(file.getName()); 
     } 
    } 

    return list; 
} 

これは、フォルダ内の画像の一覧を表示します。すべてのファイルを取得するようにコードを変更することができます。

0
ArrayList<String>nameList = new ArrayList<String>(); 
File yourDir = new File(Environment.getExternalStorageDirectory(), "/myFolder"); 
for (File f : yourDir.listFiles()) 
{ 
    if (f.isFile()) 
    { 
     nameList.add(f.getName); 
    } 

} 
0

あなたは、このコードを使用して、フォルダの特定のパスからすべてのファイルとフォルダを検索したい場合は、私たちが権限を追加必要があることを発見アンドロイド5.0ロリポップであなたに

String path="/mnt/sdcard/dcim"; //lets its your path to a FOLDER 

String root_sd = Environment.getExternalStorageDirectory().toString(); 
File file = new File(path) ;  
File list[] = file.listFiles(); 
    for(File f:list) 
    { 
     filename.add(f.getName());//add new files name in the list 
    }    
1

を助けますマニフェストへ:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

もしそうでなければ、sdcardにファイルが見つかりませんでした。私はこれを見つけるために1時間かかる!

関連する問題