首页 > 代码库 > Java底层代码实现多文件读取和写入

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