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