Java底层代码实现多文件读取和写入

需求

”E:/data/”目录下有四个文件夹,如下:

1_thumb[1]

每个文件夹下有几个.csv文件,如下:

2_thumb

将每个文件夹下的.csv文件合并成一个以该文件夹命名的.csv文件。

做法

找到“E:/data”这个目录,循环读取目录下的四个文件夹;

针对每个文件夹,循环读取目录下的文件列表;

将读取的文件写入要合并的文件中。

代码

public class FileOperation {
	public static void main(String[] args) {
		combine();
	}
	private static void combine() {
		File files = new File("E:/data/");
		String directory1[] =files.list();
		for(int x=0;x<directory1.length;x++){
			BufferedReader bufr = null;
			BufferedWriter bufw = null;
			try {	
				FileWriter fw = new FileWriter("E:/data/"+directory1[x]+".csv",true);
				bufw = new BufferedWriter(fw);	
				File fs = new File("E:/data/"+directory1[x]);
				String directory2[] = fs.list();
				for(int i=0;i<directory2.length;i++){
					File f = new File("E:/data/"+directory1[x]+"/"+directory2[i]);
					FileInputStream fi = new FileInputStream(f);
					InputStreamReader read = new InputStreamReader(fi, "GBK");
					bufr = new BufferedReader(read);
					String line = null;
					while((line=bufr.readLine())!=null){
						bufw.write(line);
						bufw.newLine();
						bufw.flush();
					}
					if(fi!=null)
						fi.close();
					if(read!=null)
						read.close();
				}
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			} finally{
				try {
					if(bufr!=null)
						bufr.close();
					if(bufw!=null)
						bufw.close();					
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

该代码已解决中文乱码问题。

小知识

列出目录下所有内容:

File files = new File("E:/data/");
String directory[] =files.list();

上述两行代码列出了”E:/data”目录下的所有内容。

原文地址:https://www.cnblogs.com/weilunhui/p/3836584.html