Java I/O---獲取文件目錄並寫入到文本
阿新 • • 發佈:2017-12-30
override log exce blog cor param 文件 direct exc
首先獲取指定目錄下的所有文件目錄,存入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; 1718 }
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---獲取文件目錄並寫入到文本