首页 > 代码库 > 黑马程序员——Java基础——IO流(三)—序列流、管道流、RandomAccessFile类、操作基本数据类型的流对象、操作数组和字符串、字符编码
黑马程序员——Java基础——IO流(三)—序列流、管道流、RandomAccessFile类、操作基本数据类型的流对象、操作数组和字符串、字符编码
第一讲 对象序列化(持久化)
一、概述:就是把对象封存在硬盘,可以保持数据;关键类:ObjectInputStream和ObjectOutpurStream
二、
关键字:ObjectOutputStream:方法有writerObject()读取 ObjectInputStream 方法有readObject() 被序列化的对象需要 implements Serializable
关于被序列化的类需要实现Serializable
它等于一个撮,标识用的,改变类里面的语句就变了。如果想固定一个撮,可以:
public static final long serialVersionUId=42L;//给他固定一个撮
1、写入流对象
使用writerObject(Object obj)方法,将对象作为参数传入
2、读取流对象
适应readObject(Object obj)方法,方法
注:被static和transient修饰后不能被序列化保存
1 /*一下主要为了演示如何对象序列化 2 * 关键字:ObjectOutputStream:方法有writerObject()读取 3 * ObjectInputStream 方法有readObject() 4 * 被序列化的对象需要 implements Serializable 5 * 6 */ 7 import java.io.*; 8 public class ObjectStreamDemo { 9 public static void main(String[] args) throws IOException,ClassNotFoundException{10 11 Person p=new Person("水音",25,"kr");12 13 File f=new File("D:\\sy.txt");14 15 writeObj(p,f);16 readObj(f);17 }18 19 private static void writeObj(Person p, File f) {20 ObjectOutputStream oos=null;21 try {22 oos=new ObjectOutputStream(new FileOutputStream(f));23 oos.writeObject(p);24 } catch (IOException e) {25 throw new RuntimeException("对象写入失败");26 }27 finally{28 try {29 if(oos!=null)30 oos.close();31 } catch (Exception e2) {32 throw new RuntimeException("关流失败");33 } 34 }35 }36 //读取37 private static void readObj(File f) {38 ObjectInputStream ois=null;39 try {40 ois=new ObjectInputStream(new FileInputStream(f));41 Person p=(Person)ois.readObject();42 System.out.println(p);43 } catch (Exception e) {44 // TODO: handle exception45 }46 finally{47 try {48 if(ois!=null)49 ois.close();50 } catch (Exception e3) {51 throw new RuntimeException("关流失败");52 } 53 }54 55 }56 // 视频读取57 public static void readObj()throws IOException, ClassNotFoundException{ 58 ObjectInputStream ois=59 new ObjectInputStream(new FileInputStream("D:\\sy.txt"));60 Person p=(Person)ois.readObject();61 System.out.println(p);62 ois.close();63 }64 65 // 视频方法存储66 public static void writeObj()throws IOException{67 68 ObjectOutputStream oos=69 new ObjectOutputStream(new FileOutputStream("D:\\sy.txt"));70 oos.writeObject(new Person("水音",24,"kr"));71 oos.writeObject(new Person("水音",25));72 oos.close();73 }74 }75 76 //创建类77 class Person implements Serializable{//必须实现这个才能被序列化78 public static final long serialVersionUId=42L;//给他固定一个撮79 80 private String name;81 transient int age;//使用transient后就不能被序列化82 static String country="cn";//静态也不能序列化83 Person(String name,int age,String country){84 this.name=name;85 this.age=age;86 this.country=country;87 }88 public String toString(){89 return name+"="+age+"="+country;90 } 91 }
黑马程序员——Java基础——IO流(三)—序列流、管道流、RandomAccessFile类、操作基本数据类型的流对象、操作数组和字符串、字符编码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。