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”目录下的所有内容。

你可能感兴趣的:(java)