package shb.java.testIo; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.Writer; import java.util.HashMap; /** * File類操作(此代碼效率不是很高———>輸出格式有欠缺。功能還是可以實現的,僅僅是飯后茶涼小憩一下) * @Package:shb.java.testIo * @Description:遍歷文件夾下所有文件,對於有內容的文件,保存其內容並輸出至指定文本文件,最后輸出的是map集合。 * @author shaobn * @Date 2015-9-6上午11:34:53 */ public class demo1 { public static void main(String[] args) throws Exception { File dir = new File("D:\\testRemove"); File target = new File("D:\\target.txt"); BufferedWriter bw = new BufferedWriter(new FileWriter(target)); HashMap<String, String> map = new HashMap<String,String>(); method1(dir,bw,map); method3(map.toString(), bw); } // 遍歷文件夾下所有文件,對於有內容的文件全部寫到一個文本文件中。 public static void method1(File dir,Writer writer,HashMap<String,String> map){ File[] files = dir.listFiles(); for(File file:files){ if(file.isDirectory()){ method1(file, writer,map); }else { if(file.length()!=0){ map.put(file.getName(), method2(file)); } } } } //讀取文件里面的內容 public static String method2(File file){ BufferedReader br = null; StringBuffer sb = new StringBuffer(); try { br = new BufferedReader(new FileReader(file)); String line = null; while((line = br.readLine())!=null){ sb.append(line); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); }finally{ try { if(br!=null){ br.close(); } } catch (Exception e2) { // TODO: handle exception e2.printStackTrace(); } } return sb.toString(); } //將讀取的路徑以及相應的內容寫入指定的文件 public static void method3(String str,Writer writer){ try { writer.write(str); } catch (Exception e) { // TODO: handle exception }finally{ try { if(writer!=null) writer.close(); } catch (Exception e2) { // TODO: handle exception e2.printStackTrace(); } } } }
如有錯誤,望大家糾正一下。