1. 程式人生 > >Java I/O---獲取文件目錄並寫入到文本

Java I/O---獲取文件目錄並寫入到文本

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; 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---獲取文件目錄並寫入到文本