JAVA实现File类中的遍历操作并输出内容
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(); } } } }
如有错误,望大家纠正一下。
吾宁做一叶扁舟,始航于湖边,遨游于海上,浪迹于江中。