Java 输入/输出——处理流(ObjectIO)

时间:2023-03-10 01:56:08
Java 输入/输出——处理流(ObjectIO)

  Object流:直接将Object流写入或读出。

  • TestObjectIO.java
  • transient关键字(英文名:透明的,可以用来修饰成员变量(实例变量),transient修饰的成员变量(实例变量)在serializable序列化时不予考虑)
  • serializable接口(可以被序列化,属于标记性接口,里面没有定义方法,打标机给编译器看,编译器看到了则认为该类可以被序列化)
  • externalizable接口
 package com.zyjhandsome.io;

 import java.io.*;

 public class TestObjectIO {

     public static void main(String[] args) {
// TODO Auto-generated method stub
T t = new T();
t.k = 8; try {
FileOutputStream fos = new FileOutputStream("D:\\zhaoyingjun\\else\\Test\\TestObjectIO.log");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(t);
oos.flush();
oos.close(); FileInputStream fis = new FileInputStream("D:\\zhaoyingjun\\else\\Test\\TestObjectIO.log");
ObjectInputStream ois = new ObjectInputStream(fis);
try {
T tReaded = (T)ois.readObject();
System.out.println(tReaded.i + " + " + tReaded.j + " + " + tReaded.d + " + " + tReaded.k + " = ");
System.out.println(tReaded.i + tReaded.j + tReaded.d + tReaded.k); } catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} class T implements Serializable
{
int i = 10;
int j = 9;
double d = 2.3;
int k = 15;
}

  输出结果:

 10 + 9 + 2.3 + 8 =
29.3

  结合transient关键字使用:

 package com.zyjhandsome.io;

 import java.io.*;

 public class TestObjectIO {

     public static void main(String[] args) {
// TODO Auto-generated method stub
T t = new T();
t.k = 8; try {
FileOutputStream fos = new FileOutputStream("D:\\zhaoyingjun\\else\\Test\\TestObjectIO.log");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(t);
oos.flush();
oos.close(); FileInputStream fis = new FileInputStream("D:\\zhaoyingjun\\else\\Test\\TestObjectIO.log");
ObjectInputStream ois = new ObjectInputStream(fis);
try {
T tReaded = (T)ois.readObject();
System.out.println(tReaded.i + " + " + tReaded.j + " + " + tReaded.d + " + " + tReaded.k + " = ");
System.out.println(tReaded.i + tReaded.j + tReaded.d + tReaded.k); } catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} class T implements Serializable
{
int i = 10;
int j = 9;
double d = 2.3;
transient int k = 15;
}

  输出结果:

 10 + 9 + 2.3 + 0 =
21.3