根据文件扩展名过滤文件数组

时间:2011-12-02 06:19:45

标签: android android-file

我有以下代码:

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

此处的文件[]数组包含目录中所有文件的列表。 我想基于文件扩展名创建另一个file []数组。例如:这个新数组应该只包含所有图像文件的列表(以.jpg / .png / .tif等结尾),它应该排除其他文件。

我如何实现这一目标?

3 个答案:

答案 0 :(得分: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>();

并在processFile中:

filesPath.Add(aFile.getAbsolutePath());

最后你可以得到这样的数组:

filesPath.toArray();

答案 1 :(得分:0)

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

 File[] listFiles(FileFilter filter)

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

File[] listFiles(FilenameFilter filter)

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

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

答案 2 :(得分:0)

尝试这样做。它可以帮助过滤带有扩展名的文件:

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