今天有同事问我动态读写对象的问题,于是就想到了序列化。在此做下笔记,防止丢失被盗
package org.vic.test.model; import java.io.Serializable; import java.util.List; public class Class implements Serializable{ /** * */ private static final long serialVersionUID = -4684355891224377925L; private String name; private List<Stu> students; public String getName() { return name; } public void setName(String name) { this.name = name; } public List<Stu> getStudents() { return students; } public void setStudents(List<Stu> students) { this.students = students; } }
package org.vic.test.model; import java.io.Serializable; import java.util.List; public class Grade implements Serializable { /** * */ private static final long serialVersionUID = -3162228744230892998L; private String name; private List<Class> classes; public String getName() { return name; } public void setName(String name) { this.name = name; } public List<Class> getClasses() { return classes; } public void setClasses(List<Class> classes) { this.classes = classes; } }
package org.vic.test.model; import java.io.Serializable; public class Stu implements Serializable{ /** * */ private static final long serialVersionUID = 3175234590284653474L; private String id; private String name; private int age; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
package org.vic.test.tester; import java.io.Closeable; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.List; import org.vic.test.model.Grade; import org.vic.test.model.Stu; public class MyTester { private static final String path = "d:\\test.obj"; public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException { Stu s0= new Stu(); s0.setId("1"); s0.setName("zhangsan"); s0.setAge(12); Stu s1= new Stu(); s1.setId("2"); s1.setName("lisi"); s1.setAge(13); Stu s2= new Stu(); s2.setId("3"); s2.setName("wangwu"); s2.setAge(14); List<Stu> list = new ArrayList<>(); list.add(s0); list.add(s1); list.add(s2); org.vic.test.model.Class c = new org.vic.test.model.Class(); c.setStudents(list); c.setName("class 1"); List<org.vic.test.model.Class> classList = new ArrayList<>(); classList.add(c); Grade g = new Grade(); g.setName("grade 5"); g.setClasses(classList); write(g,null); // Grade g = read(""); // String grade_name = g.getName(); // System.out.println(grade_name); // List<org.vic.test.model.Class> classes = g.getClasses(); // for (org.vic.test.model.Class c : classes) { // String class_name = c.getName(); // System.out.println(class_name); // List<Stu> students = c.getStudents(); // for (Stu s : students) { // int age = s.getAge(); // String id = s.getId(); // String name = s.getName(); // System.out // .println("name=" + name + " age=" + age + " id=" + id); // } // } } public static void write(Grade g, String userPath) throws FileNotFoundException, IOException { File file; if (userPath == null || "".equals(userPath.trim())) { file = new File(path); } else { file = new File(userPath); } if (!file.exists()) { file.createNewFile(); } FileOutputStream fOut = new FileOutputStream(file); ObjectOutputStream out = new ObjectOutputStream(fOut); out.writeObject(g); out.flush(); closeStreams(out); } public static Grade read(String userPath) throws IOException, ClassNotFoundException { File file; if (userPath == null || "".equals(userPath.trim())) { file = new File(path); } else { file = new File(userPath); } FileInputStream fIn = new FileInputStream(file); ObjectInputStream in = new ObjectInputStream(fIn); Grade g = (Grade) in.readObject(); return g; } public static void closeStreams(Closeable... streams) throws IOException { if (streams != null) { for (Closeable c : streams) { if (c != null) { c.close(); } } } } }
相关推荐
学习Java序列化,里面包含一份PPT以及相应的源码演示
java序列化(Serializable)的作用和反序列化.doc 有详细的讲解哦。 在什么地方用的到都有说明的.
java 序列化详细解释 很详细 适用于高级软件开发者
java序列化代码示例,详细讲解序列化作用于使用注意规则项!!!
Java SE编程入门教程 java序列化(共14页).pptx Java SE编程入门教程 java异常(共57页).pptx Java SE编程入门教程 java正则(共8页).pptx Java SE编程入门教程 properties(共3页).pptx Java SE编程入门教程 ...
序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例...虽然你可以用你自己的各种各样的方法来保 存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。
大家请看Java的序列化结构有不足的地方请指教也希望指出不足的地方。
java序列化和反序列化java序列化和反序列化java序列化和反序列化
将java数据 序列化成PHP的格式 a:4:{s:6:"title2";s:13:"这是标题2";s:6:"title3";s:13:"这是标题3";s:5:"title";s:13:"这是标题1";s:6:"title4";s:13:"这是标题4";} 或者a:1:{i:0;a:1:{s:4:"name";s:10:"这是1321";...
在应用java进行c-s开发的时候,尤其涉及到图片和视频之间的传输时,需要用序列化和反序列化技术,希望对您有帮助
该资源提供了java常见的三个序列化框架,分别是:JBoss Marshalling,messagePack,protobuf-java
07-Java序列化面试题(10题)-新增
java 序列化,java 序列化,java 序列化,java 序列化,java 序列化,java 序列化
NULL 博文链接:https://hw1287789687.iteye.com/blog/2190768
E043-服务漏洞利用及加固-利用Java序列化漏洞进行渗透测试
java序列化是面试中经常涉及的重要主题之一。对Java序列化的深入了解不仅可以展示你的编程技能,还能体现出你对Java核心概念的掌握。本文精选了20道复杂的Java序列化面试题,并提供了详细的解析,旨在帮助你更好地...
Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化
Java序列化机制(2)- serialVersionUID 实验 http://blog.csdn.net/suileisl/article/details/16991753
android(包括java)序列化一个对象传给php去做处理,或是接到php的序列化的对象在java中做处理的工具jar包以及使用方法. 使用方法: byte[] b = null; b = PHPSerializer.serialize(一个对象);//将一个对象序列化后返回...
详细讲解了java的序列化用处、原理、算法、如何实现。希望能帮到大家。