有时候,我们的IO要求实现将两个文件的内容合并到一个文件里来。
比如,我们有一个
1.txt
,一个2.txt
。我们该如何将两个文件里面的内容,合并到3.txt
呢?
创建第一个文件的流
//1.txt字符输入流与字符缓冲输入流 FileReader fr = new FileReader("D:\\1.txt"); BufferedReader br = new BufferedReader(fr);
我们这里使用了缓存流来读取。
创建第二个文件的流
//2.txt字符输入流与字符缓冲输入流 FileReader fr2 = new FileReader("D:\\2.txt"); BufferedReader br2 = new BufferedReader(fr2);
我们这里使用了缓存流来读取。
创建第三个文件的流
//3.txt字符输出流与字符缓冲输出流 FileWriter fw3 = new FileWriter("D:\\3.txt"); BufferedWriter bw3 = new BufferedWriter(fw3);
我们这里和上面有所不同,我们需要的是缓冲流的写入,所以我们是使用BufferedWriter
对象。
实现合并
//读取1.txt文件内容并循环写入 String line = br.readLine(); while (line != null) { bw3.write(line); bw3.newLine(); line = br.readLine(); } //读取2.txt文件内容并循环写入 String line2 = br2.readLine(); while (line2 != null) { bw3.write(line2); bw3.newLine(); line2 = br2.readLine(); }
最后,我们一定要关闭缓冲流,这样才能写入。
//刷新缓冲区 bw3.flush(); //关闭流 br.close(); br2.close(); bw3.close();
成品代码
package IoDemo; import java.io.*; public class TwoFile { public static void main(String[] args) { try { //1.txt字符输入流与字符缓冲输入流 FileReader fr = new FileReader("D:\\1.txt"); BufferedReader br = new BufferedReader(fr); //2.txt字符输入流与字符缓冲输入流 FileReader fr2 = new FileReader("D:\\2.txt"); BufferedReader br2 = new BufferedReader(fr2); //3.txt字符输出流与字符缓冲输出流 FileWriter fw3 = new FileWriter("D:\\3.txt"); BufferedWriter bw3 = new BufferedWriter(fw3); //读取1.txt文件内容 String line = br.readLine(); while (line != null) { bw3.write(line); bw3.newLine(); line = br.readLine(); } //读取2.txt文件内容 String line2 = br2.readLine(); while (line2 != null) { bw3.write(line2); bw3.newLine(); line2 = br2.readLine(); } //刷新缓冲区 bw3.flush(); //关闭流 br.close(); br2.close(); bw3.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
输出一下3.txt
,如下:
网络异常,图片无法展示
|