標籤:under catch string rect nal span super iter add
首先擷取指定目錄下的所有檔案目錄,存入List集合中,然後建立文字檔將List遍曆寫入文本中儲存。
1.主程式類
1 public class Test { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 // TODO Auto-generated method stub 8 //擷取IO目錄下的所有java檔案 9 File dir = new File("H:\\workspace\\IO"); 10 11 List<File> list = fileList(dir,".java");//路徑列表,傳入過濾器 12 13 //擷取路徑下的合格檔案後,寫入一個txt中 14 File destFile = new File("H:\\workspace\\Testfile\\javaList.txt"); 15
16 write2File(list,destFile); 17 }
2.過濾檔案的方法,傳入指定 路徑參數 和檔案 尾碼參數, 返迴文件List集合
1 2 /** 3 * 定義擷取指定過濾器條件的集合 4 * @param dir 路徑 5 * @param string 尾碼.java 6 * @return 7 */ 8 public static List<File> fileList(File dir, String suffix){ 9 //1.定義集合 10 List<File> list = new ArrayList<File>(); 11 12 //2.過濾器 13 FileFilter filter = new FileFilterBySuffix(suffix); 14 getFileList(dir, list, filter); 15 16 return list; 17 18 }
3.過濾器方法和過濾器類
1 /** 2 * 定義一個擷取指定過濾器條件的集合 3 * 多級目錄下,傳遞list 4 * @param dir 路徑 5 * @param list 檔案集合 6 * @param filter 過濾器 7 */ 8 public static void getFileList(File dir, List<File> list, FileFilter filter){ 9 File[] files = dir.listFiles(); 10 11 for(File file : files){ 12 if(file.isDirectory()){ 13 getFileList(file, list, filter);//遞迴 14 }else{ 15 //過濾檔案 16 if(filter.accept(file)){ 17 list.add(file);//添加 18 } 19 } 20 } 21 } 22 } 23
1 public class FileFilterBySuffix implements FileFilter { 2 3 private String suffix; 4 5 public FileFilterBySuffix(String suffix) { 6 super(); 7 this.suffix = suffix; 8 } 9 10 @Override 11 public boolean accept(File pathname) { 12 // TODO Auto-generated method stub 13 return pathname.getName().endsWith(suffix); 14 } 15 16 }
4.寫入list到檔案方法
1 /** 2 * 將list寫入txt中 3 * @param list 檔案清單 4 * @param destFile 儲存物件java檔案清單 5 */ 6 private static void write2File(List<File> list, File destFile) { 7 // TODO Auto-generated method stub 8 BufferedWriter bufw = null; 9 10 try { 11 //使用字元緩衝區對象BufferedWriter 12 bufw = new BufferedWriter(new FileWriter(destFile)); 13 14 //遍曆list,寫入絕對路徑 15 for(File file : list){ 16 bufw.write(file.getAbsolutePath());//寫入絕對路徑 17 bufw.newLine();//換行 18 bufw.flush(); //重新整理紀錄 19 } 20 21 } catch (Exception e) { 22 // TODO: handle exception 23 } finally{ 24 if(bufw != null){ 25 try { 26 bufw.close(); 27 } catch (IOException e) { 28 // TODO Auto-generated catch block 29 throw new RuntimeException(); 30 } 31 } 32 } 33 }
Java I/O---擷取檔案目錄並寫入到文本