我有以下代码:
File dir = new File("/sdcard/LOST.DIR");
final File file[]=dir.listFiles();
此处的文件[]数组包含目录中所有文件的列表。 我想基于文件扩展名创建另一个file []数组。例如:这个新数组应该只包含所有图像文件的列表(以.jpg / .png / .tif等结尾),它应该排除其他文件。
我如何实现这一目标?
答案 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;
}
});
}
}