1.编写一个程序,其功能是将两个文件内容合并到一个文件中。
思路:本题主要考察对文件流类FileReader和FileWriter的使用方法,实现从文件中读取数据,以及向文件中输入数据。
第一步: 采用面向字符的文件流读出文件内容,使用FileReader类的read()方法,写文件内容使用FileWriter类的write()方法。
第二步: 通过键盘方式输入要合并的两个源文件的文件名以及合并后的新文件名。
第三步: 将两个源文件内容分别读出并写入到目标文件中。
package com.chapter7;
import java.io.*;
/**
* @Author: qp
* @Time: 2021/10/6 16:34
* @Description 将两个文件的内容合并到一个文件中
*/
public class Example7_7 {
public static void main(String[] args) throws Exception {
File file1, file2, fout;//定义需要合并的文件和合并之后的文件
//通过键盘方式输入文件名 system.in是InputStream对象
InputStreamReader inputStreamReader = new InputStreamReader(System.in);//定义字节输入流
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);//定义缓冲字符输入流
System.out.println("请输入需要合并的第一个文件名:");
file1 = new File(bufferedReader.readLine());
if(!file1.exists()){
System.out.println("文件名不存在");
System.exit(0);
}
System.out.println("请输入需要合并的第二个文件名:");
file2 = new File(bufferedReader.readLine());
// 需要进行文件是否存在的判定,因为文件将用于输入流,如果系统中不存在此文件,将会报错Exception in thread "main" java.io.FileNotFoundException: xxx.txt (系统找不到指定的文件。)
if(!file2.exists()){
System.out.println("文件名不存在");
System.exit(0);
}
System.out.println("请输入合并后的文件名:");
fout = new File(bufferedReader.readLine());
// 不需要判定,因为此文件将用于输出流
// if(!fout.exists()){
// System.out.println("文件名不存在");
// System.exit(0);
// }
//合并file1和file2
FileReader f1 = new FileReader(file1);
FileReader f2 = new FileReader(file2);
FileWriter fileWriter = new FileWriter(fout);
int ch;
while ((ch = f1.read())!=-1){
fileWriter.write(ch);//复制file1文件内容到fout文件中
}
while ((ch = f2.read())!=-1){
fileWriter.write(ch);//复制file2文件内容到fout文件中
}
if(fout!=null){
System.out.println("合并成功");
}else {
System.out.println("合并失败");
}
f1.close();
f2.close();
fileWriter.close();
}
}