JAVA实现File类中的遍历操作并输出内容

时间:2023-03-09 04:21:15
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();
}
} }
}

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