3、创建文件,写入数据,请老师检查,感恩!

来源:16-20 测评作业

mottoyin

2025-02-23

UserFileWriter类

package com.imooc.chapter16test;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class UserFileWriter {
    //私有成员属性bufferWriter
    private BufferedWriter bufferedWriter;

    //带参构造方法
    public UserFileWriter(BufferedWriter bufferedWriter) {
        this.bufferedWriter = bufferedWriter;
    }

    public BufferedWriter getBufferedWriter() {
        return bufferedWriter;
    }

    public void setBufferedWriter(BufferedWriter bufferedWriter) {
        this.bufferedWriter = bufferedWriter;
    }

    /**
     * 写入字符串
     * @param content 用户控制台输入的字符串
     */
    public void writeUserInput(String content){
        try {
            bufferedWriter.write(content);
            bufferedWriter.newLine();
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }
}

测试类

package com.imooc.chapter16test;

import com.immoc.lottery.DataWrite;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class UserFileWriterTest {
    public static void main(String[] args) {
        String fileName = "readme.txt"; //文件名
        String directory = "./"; //当前目录

        //使用File(String parent, String child)实例化File对象
        File file = new File(directory,fileName);

        //提示用户输入字符串并捕捉用户输入
        System.out.println("请输入字符串: ");
        Scanner sc = new Scanner(System.in);
        String contents = sc.nextLine();

        //创建空的bufferedWriter与fileWriter实例对象
        BufferedWriter bufferedWriter =  null;
        FileWriter fileWriter = null;

        try {
            //使用字符输出流将用户输入字符串写入文件
            fileWriter = new FileWriter(file,true);
            bufferedWriter = new BufferedWriter(fileWriter);
            UserFileWriter userFileWriter = new UserFileWriter(bufferedWriter);
            userFileWriter.writeUserInput(contents);
            System.out.println("写入数据完成");
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            //如果fileWriter与bufferedWriter都不为空
            //将缓冲区内容写入文件并关闭2个输出流
            if(fileWriter != null && bufferedWriter != null){
                try {
                    fileWriter.flush(); //关闭缓冲区
                    bufferedWriter.flush();
                    fileWriter.close();
                    bufferedWriter.close();
                } catch (IOException e) {
                    System.out.println(e.getMessage());
                }
            }
        }
    }
}

写回答

1回答

彭彭老师

2025-02-23

没有问题,实现了作业的要求。同学封装了 UserFileWriter 类,可以将文件写入的逻辑完整地封装在 UserFileWriter 类中,这样会简化 main 方法,程序调用更简单,程序封装性更强

0
0

Java零基础入门与实战

Java零基础入门与实战 多场景|多案例|全栈项目

277 学习 · 220 问题

查看课程