JAVA基础复习(五)

JAVA基础复习(五),第1张

11.I/O

transient可以阻止序列化,只能修饰变量,不能修饰类和方法。修饰的变量在反序列化后会变成默认值,比如int类型会变0。static不会被序列化,不属于对象。序列化成为二进制对象须加Serializable关键字

例:

public class TransientModel implements Serializable {
    private static final long serialVersionUID = -4575083234166325540L;

    private String a;
    private transient String b;


    public TransientModel (String a,String b){
        this.a= a;
        this.b= b;
    }

    @Override
    public String toString(){
        return String.format("TransientModel.toString(): a=%s,b=%s", a,b);
    }
}

    public static void main(String[] args){
        String a="a", b="b";
        TransientModel model = new TransientModel(a, b);
        System.out.println("序列化前:"+model.toString());
        ObjectOutputStream outStream;
        ObjectInputStream inStream;
        //文件保存在本地,把这个路径换成自己的文件路径
        String filePath = "D:/test/test.log";
        try {
            outStream = new ObjectOutputStream(new FileOutputStream(filePath));
            outStream.writeObject(model);
            inStream = new ObjectInputStream(new FileInputStream(filePath));
            TransientModel readObject = (TransientModel)inStream.readObject();
            System.out.println("序列化后:"+readObject.toString());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

I/O流的划分

按照流向,分为输入输出

按照 *** 作单元,分为字节流和字符流

按照角色分为节点和处理

4个抽象基类:字符的输入输出:Input/OutputStreamRead. 字节的输入输出:Input/OutputStream

具体io流细分参考javaguide图

字符流方便字符传输,避免字节流转换字符时出现编码导致的乱码问题。

节点流:可以在指定位置读写的,如FileReader

处理流:对已存在的流封装,通过封装功能实现读写,如BufferReader

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/869239.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存