1

次のコードがあります。

File dir = new File("/sdcard/LOST.DIR");
final File file[]=dir.listFiles();

ここの file[] 配列には、ディレクトリに存在するすべてのファイルのリストが含まれています。ファイル拡張子に基づいて別の file[] 配列を作成したいと考えています。例: この新しい配列には、すべての画像ファイル (.jpg / .png / .tif などで終わる) のみのリストを含める必要があり、他のファイルは除外する必要があります。

どうすればこれを達成できますか?

4

3 に答える 3

1

ファイルを見つけるために次のようなことを試すことができます:

public void processDirectory(File aFile)
{
   if (aFile.isFile()) 
   {
       processFile(aFile);
   } else if (aFile.isDirectory()) {            
   File[] listOfFiles = aFile.listFiles();
   if (listOfFiles != null) {
      for (int i = 0; i < listOfFiles.length; i++)
         processDirectory(listOfFiles[i]);
   } else {
      Log.d(TAG, " [ACCESS DENIED]");
   }
}
}

public void processFile(File aFile) 
{
try 
{
if (!aFile.getName().endsWith(".mp3"))
return;
//Add file path to another array of files
}
}

そして今、あなたはこのようにすることができます:

File dir = new File("/sdcard/LOST.DIR");
processDirectory(dir)

更新:たとえば、宣言できます

ArrayList<String> = filesPath new ArrayList<String>();

およびプロセスファイル内:

filesPath.Add(aFile.getAbsolutePath());

最後に、次のような配列を取得できます。

filesPath.toArray();
于 2011-12-02T06:42:10.553 に答える
0

これに使用できますJava File methods(私はこれを試したことはありません)

 File[] listFiles(FileFilter filter)

指定されたフィルタを満たす、この抽象パス名が示すディレクトリ内のファイルおよびディレクトリを示す抽象パス名の配列を返します。

File[] listFiles(FilenameFilter filter)

指定されたフィルタを満たす、この抽象パス名が示すディレクトリ内のファイルおよびディレクトリを示す抽象パス名の配列を返します。

この素敵な Java File Filter の例を見てくださいFilter Files in Java

于 2011-12-02T06:40:32.283 に答える