java序列化与反序列化
来源:互联网 发布:linux安装ruby环境 编辑:程序博客网 时间:2024/05/24 06:08
1.序列化到txt文件中
//Person.java
package com.huowolf.api;import java.io.Serializable;/* * 把对象转换为字节序列的过程称为对象的序列化。 * 把字节序列恢复为对象的过程称为对象的反序列化。 * * 任何类型只要实现了Serializable接口,就可以被保存到文件中, * 或者作为数据流通过网络发送到别的地方。 * 也可以用管道来传输到系统的其他程序中。 * * 想要实现序列化的类都应该实现该接口 * transient:非静态数据不想被序列化可以使用这个关键字修饰。 */public class Person implements Serializable{private static final long serialVersionUID = 952L;private String userName;private String password;private int age;public Person(String userName, String password, int age) {super();this.userName = userName;this.password = password;this.age = age;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}
//SerializationDemo.java
package com.huowolf.api;/* * 需求:在D盘创建文件“user.txt"应用对象序列化知识将用户信息保存到文件中, * 之后将对象读入修改密码后在写回文件(用户包括用户名,密码,年纪3个属性) */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.Scanner;public class SerializationDemo {public static void readObj() throws Exception {ObjectInputStream ois = new ObjectInputStream(new FileInputStream("d:\\user.txt"));Person p = (Person) ois.readObject();System.out.println("用户名:"+p.getUserName()+" 密码:"+p.getPassword()+" 年龄:"+p.getAge());ois.close();}public static void writeObj(Person p) throws FileNotFoundException, IOException {ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("d:\\user.txt"));oos.writeObject(p);oos.close();}public static void main(String[] args) throws Exception {Scanner sc = new Scanner(System.in);Person p = new Person("小红","111111",18);writeObj(p);readObj();System.out.println("请输入修改的密码:");String word = sc.nextLine();sc.close();p.setPassword(word);System.out.println(p.getUserName()+" "+p.getPassword()+" "+p.getAge());writeObj(p);}}
2.序列化到XML文件中
//SerializeXmlDemo .java
package com.huowolf.api;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import com.thoughtworks.xstream.XStream;/* * 序列化、反序列化为XML文件,使用了XStream来序列化, * 需要引入xstream-1.4.7.jar包的支持, * http://xstream.codehaus.org/download.html 处可以下载jar, * 然后引入到Eclipse中的build path中。 */public class SerializeXmlDemo {//序列化到xml文档public static void serializeToXml() throws IOException {Person[] myPerson = new Person[2]; myPerson[0] = new Person("Jay","1111",24); myPerson[1] = new Person("Tom","2222",23); XStream xstream = new XStream(); FileOutputStream fos = new FileOutputStream("myPerson.xml"); xstream.toXML(myPerson,fos); System.out.println(xstream.toXML(myPerson)); }//反序列化xml文档public static void deSerializeFromXm() throws IOException {XStream xs = new XStream(); Person[] myPerson = null; FileInputStream fis = new FileInputStream("myPerson.xml"); myPerson=(Person[])xs.fromXML(fis); if (myPerson != null) { for (int i=0;i<myPerson.length;i++) { System.out.println("用户名:"+myPerson[i].getUserName()+" 密码:"+myPerson[i].getPassword()+" 年龄:"+myPerson[i].getAge()); } }}public static void main(String[] args) throws Exception {serializeToXml();deSerializeFromXm();}}
此程序输出结果:
<com.huowolf.api.Person-array> <com.huowolf.api.Person> <userName>Jay</userName> <password>1111</password> <age>24</age> </com.huowolf.api.Person> <com.huowolf.api.Person> <userName>Tom</userName> <password>2222</password> <age>23</age> </com.huowolf.api.Person></com.huowolf.api.Person-array>用户名:Jay 密码:1111 年龄:24用户名:Tom 密码:2222 年龄:23
加油!每一天!
0 0
- java序列化与反序列化
- java序列化与反序列化
- java序列化与反序列化
- java序列化与反序列化
- Java序列化与反序列化
- Java序列化与反序列化
- java 序列化 与 反序列化
- java序列化与反序列化
- JAVA序列化与反序列化
- java序列化与反序列化
- java序列化与反序列化
- java序列化与反序列化
- Java序列化与反序列化
- Java序列化与反序列化
- Java序列化与反序列化
- Java序列化与反序列化
- Java序列化与反序列化
- java序列化与反序列化
- JSP详细篇——其他一些JSP内置对象
- struts 异常处理 (全局异常处理)
- csvkit 学习和使用 (一) csvcut
- 默认参数的构造函数与虚函数及常量初始化
- nginx配置文件
- java序列化与反序列化
- 【网络安全】接入与身份认证技术概述
- infinitescroll
- 记录19--ubuntu中ftp服务器的安装和设置
- 第十三周项目字符串操作统计字符串中大小写的个数
- C# 初始化器
- win8 win10 无法宽带拨号的解决方法1062错误
- FreeRTOS学习笔记——链表
- HDU-5108-Alexandra and Prime Numbers (BestCoder Round #19)