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 回答
1

尝试这样做。它可能有助于过滤具有提供的扩展名的文件:

import java.io.*;
abstract class Test implements FileFilter{
    public static void main(String[] args){
        File f = new File(args[0]);
        final String[] okFileExtension = new String[]{"jpg","png","gif","pdf"};
        File name[] = f.listFiles(new FileFilter(){
            public boolean accept(File file){
                for(String extension : okFileExtension){
                    if(file.getName().endsWith(extension))
                        return true;
                }
                return false;
            }
        });
    }
}
于 2016-12-24T07:30:31.750 回答
0

你可以用Java File methods这个,(我从不尝试这个)

 File[] listFiles(FileFilter filter)

返回一个抽象路径名数组,表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。

File[] listFiles(FilenameFilter filter)

返回一个抽象路径名数组,表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。

看看这个不错的 JAVA 文件过滤器示例Filter Files in Java

于 2011-12-02T06:40:32.283 回答