序列化反序列化流、打印流

ObjectOutputStream(序列化流)

  ObjectOutputStream是序列化流,可以将Java程序中的对象写到文件中。

  ObjectOutputStream 构造方法:

    ObjectOutputStream(OutputStream out):参数要传递字节输出流。

  ObjectOutputStream写对象的方法(特有方法):

    void writeObject(Object obj): 向文件中写对象。

  ObjectOutputStream 的使用步骤:

    创建序列化流,用来写。

    调用 writeObject 方法,写对象。

    释放资源。

  注意: 要使用序列化流向文件中写的对象,必须实现 Serializable 接口。

  例:

 1 // 创建一个Person对象
 2 Person p=new Person("大灰狼",18);
 3 //明确目的地
 4 FileOutputStream fos=new FileOutputStream("D:\\demo0723\\person.txt");//不能续写true
 5 //创建序列化流
 6 ObjectOutputStream oos=new ObjectOutputStream(fos);
 7 //将对象写入文件中
 8 oos.writeObject(p);
 9 //释放资源
10 oos.close();

ObjectInputStream(反序列化流)

  ObjectInputStream 是反序列化流, 可以将文件中的对象读取到 Java 程序中。

  ObjectInputStream 的构造方法:

    ObjectInputStream(InputStream in):参数要传递字节输入流。

  ObjectInputStream 读取对象的方法(特有的方法):

    Object readObject(): 从文件中读取对象,并将该对象返回。

  反序列化流的使用步骤:

    创建 ObjectInputStream 反序列化流。

    调用 readObject 方法,读取对象。

    释放资源。

  注意:调用 readObject 方法读取对象时,对象所对应的类不存在,那么会报错(ClassNotFoundException)

 1 public static void read() throws ClassNotFoundException, IOException{
 2         //明确数据源
 3         FileInputStream fis=new FileInputStream("D:\\demo0723\\person.txt");
 4         //创建反序列化刘
 5         ObjectInputStream ois=new ObjectInputStream(fis);
 6         //从person.txt中将对象读取出来
 7         Person p=(Person)ois.readObject();
 8         System.out.println(p);
 9         //释放资源
10         ois.close();
11     }

  特殊情况:

    被 static 修饰的成员变量无法序列化,无法写到文件。

    如果不希望某个成员变量写到文件,同时又不希望使用 static 关键字, 那么可以使用 transient。transient 关键字表示瞬态,被 transient 修饰的成员变量无法被序列化。

    如果想要修改序列化后的文件 ,也可以加serialVersionUID,使序列化时生成的值与反序列化时值一致。

  

打印流:

  打印流是输出信息最方便的类,注意包含字节打印流PrintStream和字符打印流:PrintWriter。打印流提供了非常方便的打印功能,

  可以打印任何类型的数据信息,例如:小数,整数,字符串。

  打印流的特点:

    不负责数据源,只负责数据目的

    为其他输出流,添加功能

    永远不会抛出IO异常,但是可能抛出别的异常

  特有的方法:print()和println()方法,System.out.print()方法可以打印任何数据类型。

  PrintSteam构造方法接收:

            File类型、字符串文件名、字节输出流OutputStream

  例:

//明确目的地
        FileOutputStream fos=new FileOutputStream("D:\\demo0723\\print.txt");
        //创建打印流
        PrintStream ps=new PrintStream(fos);
        //输出
        ps.print("你好");
        ps.print(true);
        ps.println(123);
        //释放资源
        ps.close();

  PrintWriter构造方法接收:

            File类型、字符串文件名、字节输出流OutputStream、字符输出流Writer

  例:

 1 //明确目的地
 2     FileWriter fw=new FileWriter("D:\\demo0723\\print.txt",true);  //续写
 3     //创建字符打印流
 4     PrintWriter pw=new PrintWriter(fw,true);//自动刷新
 5     //输出
 6     pw.println(false);
 7     pw.println("大灰狼");
 8     pw.print(1.2);
 9     //释放资源
10     pw.close();

 

猜你喜欢

转载自www.cnblogs.com/zhai113/p/11757853.html