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();
            }
        }
        
    }
}

如有错误,望大家纠正一下。

posted @ 2015-09-06 12:27  邻家小书童  阅读(6004)  评论(0编辑  收藏  举报