首先获取指定目录下的所有文件目录,存入List集合中,然后创建文本文件将List遍历写入文本中保存。
1.主程序类
public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //获取IO目录下的所有java文件 File dir = new File("H:\\workspace\\IO"); List<File> list = fileList(dir,".java");//路径列表,传入过滤器 //获取路径下的符合条件的文件后,写入一个txt中 File destFile = new File("H:\\workspace\\Testfile\\javaList.txt");
write2File(list,destFile); }
2.过滤文件的方法,传入指定 路径参数 和文件 后缀参数, 返回文件List集合
/** * 定义获取指定过滤器条件的集合 * @param dir 路径 * @param string 后缀.java * @return */ public static List<File> fileList(File dir, String suffix){ //1.定义集合 List<File> list = new ArrayList<File>(); //2.过滤器 FileFilter filter = new FileFilterBySuffix(suffix); getFileList(dir, list, filter); return list; }
3.过滤器方法和过滤器类
/** * 定义一个获取指定过滤器条件的集合 * 多级目录下,传递list * @param dir 路径 * @param list 文件集合 * @param filter 过滤器 */ public static void getFileList(File dir, List<File> list, FileFilter filter){ File[] files = dir.listFiles(); for(File file : files){ if(file.isDirectory()){ getFileList(file, list, filter);//递归 }else{ //过滤文件 if(filter.accept(file)){ list.add(file);//添加 } } } } }
public class FileFilterBySuffix implements FileFilter { private String suffix; public FileFilterBySuffix(String suffix) { super(); this.suffix = suffix; } @Override public boolean accept(File pathname) { // TODO Auto-generated method stub return pathname.getName().endsWith(suffix); } }
4.写入list到文件方法
/** * 将list写入txt中 * @param list 文件列表 * @param destFile 存储对象java文件列表 */ private static void write2File(List<File> list, File destFile) { // TODO Auto-generated method stub BufferedWriter bufw = null; try { //使用字符缓冲区对象BufferedWriter bufw = new BufferedWriter(new FileWriter(destFile)); //遍历list,写入绝对路径 for(File file : list){ bufw.write(file.getAbsolutePath());//写入绝对路径 bufw.newLine();//换行 bufw.flush(); //刷新纪录 } } catch (Exception e) { // TODO: handle exception } finally{ if(bufw != null){ try { bufw.close(); } catch (IOException e) { // TODO Auto-generated catch block throw new RuntimeException(); } } } }