Java输入与输出学习练习题

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();
    }


}

2.计算机中的流是指:流动的字节

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值