Java入门-学生成绩管理系统(四)

Java入门-学生成绩管理系统(四)

文件管理类:FileControler

在这个类中,需要:

1.读取数据、

2.写入数据。


在文件中,采用*字符作为结束符。

在读取数据时,以遇到*作为停止读入标志。

每一次写入新的数据,并退出程序之后,都将会把数据重新写入txt写字本中。并且依然以*字符作为结束符。


/*FileControler*/
package control;

import model.StudentInfo;

import java.io.*;
import java.util.ArrayList;

public class FileControler {

    /*/容纳所有信息的数组*/
    public  static ArrayList all_student=new ArrayList< StudentInfo>();
    private File file=new File("data.txt");

    public void fileStart() throws IOException {
        checkFile();
        readFromFile();
    }

    public void fileFinish() throws IOException {
        try {
            writeToFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    /*检测文件是否存在
    * 若不存在,则创建文件*/
    private void checkFile() throws IOException {

        if(file.exists()==false)
        {
            file.createNewFile();
            initFile();
        }
    }

    private void initFile() throws IOException {
        FileOutputStream fos=new FileOutputStream(file);
        DataOutputStream dos=new DataOutputStream(fos);
        for(int i=0;i<6;i++)
            dos.writeUTF("*");
    }

    /*
    * 从文件读取数据*/
    private void readFromFile() throws IOException {
        FileInputStream fis=new FileInputStream(file);
        DataInputStream dis=new DataInputStream(fis);

         /*/判断文件是否结束*/
        while(true)
        {
            StudentInfo obj=new StudentInfo();
            obj.ID=dis.readUTF();
            obj.name=dis.readUTF();
            obj.grade=dis.readUTF();
            obj.sex=dis.readUTF();
            obj.age=dis.readUTF();
            obj.score=dis.readUTF();
            if(obj.ID.equals("*")&&
                    obj.name.equals("*")&&
                    obj.grade.equals("*")&&
                    obj.sex.equals("*")&&
                    obj.age.equals("*")&&
                    obj.score.equals("*"))
                break;
            all_student.add(obj);
        }

    }

    /*/
    * 向文件写入数据*/
    private void writeToFile() throws IOException {
        FileOutputStream fos=new FileOutputStream(file);
        DataOutputStream dos=new DataOutputStream(fos);
        StudentInfo obj;

        for(int i=0;i<all_student.size();i++)
        {
            obj=(StudentInfo)all_student.get(i);

            dos.writeUTF(obj.ID);
            dos.writeUTF(obj.name);
            dos.writeUTF(obj.grade);
            dos.writeUTF(obj.sex);
            dos.writeUTF(obj.age);
            dos.writeUTF(obj.score);
        }

        /*/写入文件结束标志*/
        for(int i=0;i<6;i++)
            dos.writeUTF("*");
    }


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值