设为首页 加入收藏

TOP

笔记-迎难而上之Java基础进阶7(一)
2019-09-03 01:23:50 】 浏览:34
Tags:笔记 迎难而上 Java 基础 进阶

序列化流

把对象以流的方式写入到文件中保存,叫做对象的序列化

把文件中保存的对象,以流的方式读取出来,叫做对象大反序列化

对象的序列化流_ObjectOutputtream继承自OutputStream

作用:把对象以流的方式写入到文件中保存

构造方法:

? ObjectOutputStream(OutputStream out)

特有成员方法:

? void writeObject(Object obj) 将指定的对象写入ObjectOutputStream
//做序列化需要对象,该对象还得实现Serializable接口
import java.io.*;
public class Person implements Serializable{
    //被transient关键字修饰的成员变量无法被序列化
    //假如String name 被transient修饰那么在写入对象的时候name 写入为null
    private String name;
    private int age;
    
    public Person(){}
    
    public Person(String name,int age){
        this.name=name;
        this.age=age;
    }
    
    public String toString(){
        String str = "姓名 "+name+" 年龄"+age;
        return str;
    }
       public void setName(String name ){
        this.name=name;
    }
    public String getName(){
        return name;
    }
    public void  setAge(int age){
        this.age=age;
    }
    public int getAge(){
        return age;
    }
    
}
import java.io.*;
public class ObjectOutputStreamDemo{
    public static void main(String[] args) throws IOException{
        //创建ObjectOutputStream对象,构造方法中传递字节输出流
        //字节输出流FileOutputStream绑定写入对象地址
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("E:\\study\\demo14\\a.txt"));
        //调用方法writeObject,写入对象
        oos.writeObject(new Person("新垣结衣",18));
        oos.writeObject(new Person("石原里美",20));
        //写出结果
        //? sr Person篝9'?l$ I ageL namet Ljava/lang/String;xp   t 鏂板灒缁撹。sq ~     t 鐭冲師閲岀編
        oos.close();
    }
}
对象的反序列化流量_ObjectInputStream

构造方法:

? ObjectInputSteam(InputStream in)

特有成员方法:

Object readObject()

//反序列化的前提是读取的类必须存在class文件,必须实现Serializable接口
import java.io.*;
public class ObjectInputStreamDemo{
    public static void main(String[] args) throws IOException,ClassNotFoundException{
    //创建ObjectInputStream对象
    ObjectInputStream ois = new ObjectInputStream(new FileInputStream("E:\\study\\demo14\\a.txt"));
    //方法readObject的返回值是Object
    Object o = ois.readObject();
    Object o1 = ois.readObject();
    ois.close();
    System.out.println(o);
    System.out.println(o1);
        
    }
}

被transient修饰的name

img

序列化集合
import java.io.*;
import java.util.*;
public class TestDemo{
    public static void main(String[] args) throws Exception{
        //序列化集合,创建一个集合
        ArrayList<Person> list = new ArrayList<>();
        //添加元素
        list.add(new Person("林黛玉",18));
        list.add(new Person("贾宝玉",20));
        list.add(new Person("孙悟空",15));
        list.add(new Person("猪八戒",22));
        //创建ObjectOutputStream序列化流
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("E:\\study\\demo14\\b.txt"));
        //序列化流对象
        oos.writeObject(list);
        //创建ObjectInputStream序列化流
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("E:\\study\\demo14\\b.txt"));
        //反序列化
        Object o = ois.readObject();
        //强制把Object类型转换成ArrayList类型
        ArrayList<Person> list1= (ArrayList<Person>)o;
        //遍历集合
        for(Person p : list1){
            String str = p.getName()+" "+p.getAge();
            System.out.println(str);
        }

    }
}
打印流

PrintStream的特点:

  1. 只负责数据的输出,不负责数据的读取
  2. 与其他输出流不同,PrintStream 永远不会抛出 IOException
  3. 有特有的方法,print,println

构造方法:

? PrintStream(File file):输出的目的地是一个文件

? PrintStream(OutputStream out ):输出的目的地是一个字节输出流

? PrintStream(String fileName) :输出的目的地是一个文件路径

import java.io.*;
public class PrintStreamDemo{
    public static void main(String[] args)
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇服务治理: Spring Cloud Eureka 下一篇超实用的Nginx极简教程,覆盖了常..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目