看看这个读取方法,如何写入内存

问题遇到的现象和发生背景

我想在主类程序结束的时候 将新的数据覆盖到txt文件,求写法

用代码块功能插入代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

//这是txt的读取方法


 public static List<IO> readIO(String path){
        List<IO> list=new ArrayList<>();
        try {
            BufferedReader fileBuffer = new BufferedReader(new FileReader(path));
            fileBuffer=new BufferedReader(new InputStreamReader(new FileInputStream("C:\\Users\\ASUS\\Desktop\\大作业\\IO.txt"),"UTF-8"));
            String date=null;
            String d="\t";
            while ((date = fileBuffer.readLine()) != null) {// 读取文件一行信息
                IO h = new IO();
                StringTokenizer dealDate = new StringTokenizer(date,d);// 教师的信息是\t逗号隔开的
                //Exam
                Exam exam=new Exam(dealDate.nextToken(),dealDate.nextToken(),dealDate.nextToken());
                h.exam=exam;
                //学生
                String[] split = dealDate.nextToken().split(",");
                for(String s:split){
                    String[] s1 = s.split(":");
                    User user=new User(s1[0],s1[1]);
                    h.SID.add(user);
                }

                //老师
                String[] split2 = dealDate.nextToken().split(",");
                for(String s:split2){
                    String[] s1 = s.split(":");
                    User user=new User(s1[0],s1[1]);
                    h.TID.add(user);
                }
                list.add(h);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;
    }
public static void writeIO(String path,IO io,boolean isAppend){
        BufferedWriter out = null;
        try {
            out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(path), isAppend)));
            //写入exam信息
            out.newLine();
            out.write(io.exam.subject+"\t"+io.exam.time+"\t"+io.exam.room+"\t");
            //写入学生信息
            List<User> sid = io.SID;
            int slen = sid.size();
            for(int i=0;i<slen-1;i++){
                out.write(sid.get(i).ID+":"+sid.get(i).name+",");
            }
            out.write(sid.get(slen-1).ID+":"+sid.get(slen-1).name+"\t");

            //写入老师信息
            List<User> tid = io.TID;
            int tlen = tid.size();
            for(int i=0;i<tlen-1;i++){
                out.write(tid.get(i).ID+":"+tid.get(i).name+",");
            }
            out.write(tid.get(tlen-1).ID+":"+tid.get(tlen-1).name);
            out.flush();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

可以借助 FileOutputStream OutputStreamWriter BufferedWriter 来写入文件

代码参考:

    public static void write(String path, List<IO> list){
        try ( BufferedWriter writer =new BufferedWriter(new OutputStreamWriter(new FileOutputStream("C:\\Users\\ASUS\\Desktop\\大作业\\IO.txt"),"UTF-8"))){
            for (IO io : list) {
                // 这里只是示例,可以自行定义存放内容
                writer.write(io.toString());
                writer.newLine();
                writer.flush();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632