对象流
- 对象的本质 : 他是抽象的概念,是JVM中的一种虚拟的抽象概念
- 对象流:就是java提供的一种,可以将java对象这种虚拟概念转换为可以物理存储或者传输的真实数据
- 将虚拟的JVM中的对象转化为字节数据
对象输出流
- ObjectOutputStream
- 对象的存储
class Demo{
public static void main(String[] args){
String str = "字符串对象";
ObjectOutputStream oos = null ;
try{
oos = new ObjectOutputStream(new FileOutputStream("c:\\info.dat"));
System.out.println("对象保存成功");
}catch(IOException e){
e.printStackTrace();
}finally{
if(oos!=null){
try{
oos.close();
}catch(IOExcepton e){
e.printStackTrace();
}
}
}
}
}
对象输入流
-
ObjectInputStream
-
对象文件的读取
class Demo{
public static void main(String[] args){
ObjectInputStream ois = null ;
try{
ois = new ObjectInputStream(new FileInputStream("c:\\info.dat"));
String msg = (String) ois.readObject();
//在知道对象类型的前提下,可以进行强转,不知道则不转化
System.out.println(msg);
}catch(IOException e){
e.printStackTrace();
}finally{
if(ois!=null){
try{
ois.close();
}catch(IOExcepton e){
e.printStackTrace();
}
}
}
}
}
对象序列化
- 只有当一个对象实现可序列化接口时,这个对象才可以转换为对象流,存储和传输
- 如果不实现该接口,则存储的是错误信息
- 序列化接口 : Serializable
//对于一个任意的类Demo,实现可序列化接口时,jvm就可以帮我们序列化
class Demo implements Serializable{
private static final long serialVersionUID = -2440334408791787799L;
//我们需要提供一个UID,来帮助JVM判断我们的对象是否发生改变
}
对象反序列化
-
将序列化后的字节或者字符数据 重新转换为对象
-
java官方提供的序列化,是将java对象转换为字节数据
-
如上方所讲的对象输如流例子,也就是一个反序列化
对象持久化
- 将数据永久的保存
transient 关键字
- 被这个关键字所修饰的属性,无法持久化。
- 对象序列化时,该关键字所i修饰的属性,无法被序列化。