io

io流分为字符流和字节流 然后下面又分为很多种
目前我见到的使用io流的情况有三种

  • 第一种是读写txt文件
  • 第二种是存储object和读取object 这种是存在dat文件里面的
  • 第三种 有空回去看一看在写
存储和读取object
package dao;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;

import dto.Player;

public class DataDisk implements Data{

    private static final String FILE_PATH = "save/record.dat";
    
    @Override
    public List<Player> loadData() {
        
        ObjectInputStream ois = null;
        List<Player> players = null;
        try {
            ois = new ObjectInputStream(new FileInputStream(FILE_PATH)); //划重点
            players = (List<Player>)ois.readObject();                    //划重点
        } catch (Exception e) {
            e.printStackTrace();
        } finally{
            try {
                ois.close();                                             //划重点
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
        return players;
    }

    @Override
    public void saveData(List<Player> players) {
        
        ObjectOutputStream oos = null;
        try {
            oos = new ObjectOutputStream(new FileOutputStream(FILE_PATH)); //划重点
            oos.writeObject(players);                                      //划重点
        } catch (Exception e) {
            e.printStackTrace();
        } finally{
            try {
                oos.close();                                               //划重点
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
    }

    public static void main(String[] args){
        DataDisk dd = new DataDisk();
        List<Player> players = new ArrayList<>();
        players.add(new Player("A", 1000));
        players.add(new Player("B", 2000));
        players.add(new Player("C", 3000));
        players.add(new Player("D", 4000));
        
        dd.saveData(players);
        System.out.println("保存完毕");
        List<Player> dataFromDisk = dd.loadData();
        for(Player p : dataFromDisk){
            System.out.println(p.getName() + ":" + p.getPoint());
        }
    }
}

这段代码里面用到一个封装类Player 由于这个类是被读写的那个类 这个Player类必须implements一个叫做Serializable的接口

package dto;

import java.io.Serializable;

public class Player implements Comparable<Player>, Serializable{

    private String name;
    
    private int point;

    public Player(String name, int point) {
        super();
        this.name = name;
        this.point = point;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPoint() {
        return point;
    }

    public void setPoint(int point) {
        this.point = point;
    }

    @Override
    public int compareTo(Player pla) {
        // TODO Auto-generated method stub
        return pla.point - this.point;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容