对于上次学生成绩管理系统IO流的改进

上篇文章:<Java>实现学生信息管理系统,涉及简单IO流
本次我会对上篇文章的一些代码做出改进。
先看改进后的存储代码

package saveInformation;
/*汤*/
import java.io.*;
import java.util.Arrays;

import Student.Student;

//保存信息
public class saveTools{
	private static File file=new File("D://stu.txt");

      public static boolean saveInformation(Student[] stu) throws Exception {

		  BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file));
			for(int i=0;i<stu.length;i++){
				bufferedWriter.write(stu[i].getName()+"/"+stu[i].getNumber()+"/"+stu[i].getAge()+"/"+stu[i].getSex()+"/"+stu[i].getMath()+"/"+stu[i].getEnglish()+"/"+stu[i].getJava()+"\n");
			}
		  bufferedWriter.flush();
		  bufferedWriter.close();
		  System.out.println("文件写入成功!");

		  return true;
	}
      public static Student[] readInformation() throws Exception{
		  Student[] stu = new Student[40];
		  BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
		  String temp = "";
		  int i=0;
		  while((temp = bufferedReader.readLine()) != null){
		  	String[] str = temp.trim().split("/");//trim()去掉首位空格,split()分割String字符串
		  	String name = str[0];
			  String number = str[1];
			  String age = str[2];
			  String sex = str[3];
			  String math = str[4];
			  String english = str[5];
			  String java = str[6];
			  stu[i] = new Student(number,name,sex,Integer.valueOf(age),Integer.valueOf(math),Integer.valueOf(english),Integer.valueOf(java));
			i++;
		  }
		  return stu;
  	}
}

我将上次使用的FileReader/Writer换成了BufferedReader/Writer缓冲流,并且改进加入断点(存入时对每个信息后加上’\'分隔信息,读取时检测断点,每一个信息分成不同的字符串取出),最后通过转换valueOf转换类型再返回整个数组,大功告成!。
这里要说一个注意点:在使用缓冲流时务必加上flush(),否则会出现信息缺失的bug。
其次,为了让项目每次使用都能读入文件内容,并且和新录入的信息一起进行‘增删改查’:
①我在Controller中加入方法

public boolean addStudentAll(Student[] student) {
		if (total < 0 || total > stu.length) {
			return false;
		} else {
			for (Student student1 : student) {
				if (student1 != null) {
					stu[total++] = student1;
				}
			}
			return true;
		}
	}

②将下面代码放到View类的Menu()方法中,这样每次进入界面都会读取数组了

student.addStudentAll(saveTools.readInformation());

结果
在这里插入图片描述

进入直接读取
改进
下次会尝试用集合去改进代码,因为数组的存储空间是有限的。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值