1 packagecom.io.homework;2
3 .BufferedInputStream;4 .BufferedOutputStream;5 .FileInputStream;6 .FileNotFoundException;7 .FileOutputStream;8 .IOException;9 .ObjectInputStream;10 .ObjectOutputStream;11 .Serializable;12 importjava.util.ArrayList;13 importjava.util.Iterator;14 importjava.util.List;15
16 importorg.junit.Test;17
18 /**
19 *序列化和反序列化20 */
21 public classSerializeDemo{22
23 /*
24 * 序列化 : 创建三个不同的Person对象,将这三个对象序列化到文件中;25 */
26 @Test27 public voidserializeTest() {28 Person person1 = new Person("李明", 24, 60.2);29 Person person2 = new Person("jack", 22, 67.5);30 Person person3 = new Person("斯密瑟", 26, 70.2);31 List list = new ArrayList<>();32 list.add(person1);33 list.add(person2);34 list.add(person3);35
36 //3、创建ObjectOutputStream 的实例完成序列化
37 ObjectOutputStream oos = null;38 try{39 //1、创建输出流 FileOutputStream
40 FileOutputStream fos = new FileOutputStream("./serialize.dat");41 //2、创建缓冲包装节点流
42 BufferedOutputStream bos = newBufferedOutputStream(fos);43 oos = newObjectOutputStream(bos);44 //4、通过标识对应的数据类型,将数据写入目标地点
45 oos.writeObject(list);46 } catch(IOException e) {47 e.printStackTrace();48 } finally{49 //5、关闭流
50 if (oos != null) {51 try{52 oos.close();53 } catch(IOException e) {54 e.printStackTrace();55 }56 }57 }58 System.out.println("写入成功!!");59
60 }61
62 /*
63 * 反序列化:三个Person对象,打印输出。验证序列化的正确;64 */
65 @Test66 public voiddeserializationTest() {67 //2. 创建 ObjectInputStream 的实例,包装现有节点流,用于完成反序列化
68
69 ObjectInputStream ois = null;70 try{71 //1. 创建 FileInputStream 的实例
72 FileInputStream fis = new FileInputStream("./serialize.dat");73 BufferedInputStream bis = newBufferedInputStream(fis);74 ois = newObjectInputStream(bis);75
76 @SuppressWarnings("unchecked")77 List list = (List) ois.readObject();78 Iterator it =list.iterator();79
80 //3. 读取文件的内容
81 while(it.hasNext()) {82 Person person =it.next();83 System.out.println(person);84 }85 } catch(FileNotFoundException e) {86 e.printStackTrace();87 } catch(ClassNotFoundException e) {88 e.printStackTrace();89 } catch(IOException e) {90 e.printStackTrace();91 } finally{92 if (ois != null) {93 try{94 ois.close();95 } catch(IOException e) {96 e.printStackTrace();97 }98 }99 }100
101 }102 }103
104 //编写Person类,包含姓名、年龄、体重等属性,提供对应的访问方法;
105 class Person implementsSerializable {106
107 private static final long serialVersionUID = 314398401529574184L;108 private String name;//姓名
109 private Integer age;//年龄
110 private double whight;//体重
111
112 /**
113 *@paramname114 *@paramage115 *@paramwhight116 */
117 public Person(String name, Integer age, doublewhight) {118 super();119 =name;120 this.age =age;121 this.whight =whight;122 }123
124 publicPerson() {125 super();126 }127
128 /**
129 *@returnthe name130 */
131 publicString getName() {132 returnname;133 }134
135 /**
136 *@paramname the name to set137 */
138 public voidsetName(String name) {139 =name;140 }141
142 /**
143 *@returnthe age144 */
145 publicInteger getAge() {146 returnage;147 }148
149 /**
150 *@paramage the age to set151 */
152 public voidsetAge(Integer age) {153 this.age =age;154 }155
156 /**
157 *@returnthe whight158 */
159 public doublegetWhight() {160 returnwhight;161 }162
163 /**
164 *@paramwhight the whight to set165 */
166 public void setWhight(doublewhight) {167 this.whight =whight;168 }169
170 @Override171 publicString toString() {172 return "Person [name=" + name + ", age=" + age + ", whight=" + whight + "]";173 }174
175 }java String怎么反序列化 java反序列化list
转载文章标签 java String怎么反序列化 java list反序列化 java List 序列化 文章分类 Java 后端开发
-
Java反序列化-反射
java反序列化之-反射
java 反序列化 web安全 -
getBytes反序列化 java java反序列化
点击上方”LSCteam”,选择置顶或星标 第一时间阅读精彩文章!渗 透 测 试之 Java 反
getBytes反序列化 java java序列化 反序列化 Java 序列化
















