【求教】用java语言实现文件类型筛选
思路: 1、获得目标目录path;
2、获得path内所有文件的文件名,存入数组A1中;
3、遍历数组,并自右判断文件后缀名为.xxx,将符合要求的文件名搬移至新数组A2中;
4、打印输出 A2数组的结果至控制台。希望各位大侠,多多指点,思路有错误请指正。另如能给出源码和注释,非常感谢。
思路: 1、获得目标目录path;
2、获得path内所有文件的文件名,存入数组A1中;
3、遍历数组,并自右判断文件后缀名为.xxx,将符合要求的文件名搬移至新数组A2中;
4、打印输出 A2数组的结果至控制台。希望各位大侠,多多指点,思路有错误请指正。另如能给出源码和注释,非常感谢。
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class FileList {
private static List<String> list1 = new ArrayList<String>();
private static List<String> list2 = new ArrayList<String>();
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入目标路径:");
String path = input.next();
File file = new File(path);
System.out.println("请输入要查找的文件类型(.***):");
String type = input.next();
//取得所有文件
list(file);
//查找指定类型的文件
findByType(type);
//打印目标路径下的特定文件名
for(String fileName : list2) {
System.out.println(fileName);
}
}
/**
* 递归取得目标目录下的所有文件,将文件名存入list1
* @param file 目标路径或文件
*/
private static void list(File file) {
if(file.isDirectory()) {
File[] files = file.listFiles();
for(int i=0; i<files.length; i++) {
list(files[i]);
}
} else {
list1.add(file.getName());
}
}
/**
* 遍历list1把扩展名为type的文件名存入list2
* @param type 要查找的文件类型
*/
private static void findByType(String type) {
for(String fileName : list1) {
if(fileName.endsWith(type))
list2.add(fileName);
}
}
}
多谢指教,之后学习用 java.io.FilenameFilter 接口,在 list 的时候就过滤的方法。
//Scanner sc = new Scanner(System.in);
//System.out.println("请输入文件路径:");
//String str = sc.next();
//System.out.println(str);
File f = new File("D://SOFT");
String A1[] = f.list();
List<String> ls = new ArrayList<String>();
Pattern p = Pattern.compile(".+\\.rar",Pattern.CASE_INSENSITIVE);
Matcher m;
for(int i=0;i<A1.length;i++) {
m = p.matcher(A1[i]);
if(m.matches()) {
ls.add(A1[i]);
}
}
for (Iterator it = ls.iterator();it.hasNext();) {
System.out.println(it.next());
}
}