`

1.序列化

阅读更多

1.什么是序列化

      Java的序列化说白了就是把普通的I/O流的字符串对象变成了其它的任务抽象数据类型。用ObjectOutputStream和ObjectInputStream把实现细节进行封装,以达到减少程序员的工作量的目的。

2.序列化的对象

     序列化要求实现Serializable接口:

package com.taoistwar.jpa.test;

import java.io.Serializable;

public class SerObject implements Serializable {
	private static final long serialVersionUID = 2129765528253670319L;
	private String username;
	private String password;

	public SerObject() {
		super();
	}

	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 static long getSerialVersionUID() {
		return serialVersionUID;
	}

}

 3.序列化的读写操作

package com.taoistwar.jpa.test;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class Test {
	public static void main(String[] args) {
		String path = "c:/serializable.dat";
		SerObject so = new SerObject();
		so.setUsername("taoistwar");
		so.setPassword("test");
		Test test = new Test();
		try {
			test.writeObject(path, so);
			System.out.println("================");
			SerObject so2 = (SerObject) test.getObject(path);
			System.out.println(so2.getUsername());
			System.out.println(so2.getPassword());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public <T> void writeObject(String path, T t) throws Exception {
		FileOutputStream fos = new FileOutputStream(path);
		writeObject(fos, t);
	}

	public <T> void writeObject(FileOutputStream fos, T t) throws Exception {
		ObjectOutputStream oos = new ObjectOutputStream(fos);
		SerObject so = new SerObject();
		so.setUsername("TaoistWar");
		so.setPassword("19880910");
		oos.writeObject(so);
	}

	public Object getObject(String path) throws IOException,
			ClassNotFoundException {
		return getObject(new FileInputStream(path));
	}

	@SuppressWarnings("unchecked")
	public Object getObject(FileInputStream fis) throws IOException,
			ClassNotFoundException {
		ObjectInputStream ois = new ObjectInputStream(fis);
		Object object = ois.readObject();
		ois.close();
		return object;
	}
}
 

 

 

分享到:
评论

相关推荐

    protobuf常用序列化和反序列化API

    **protobuf常用序列化和反序列化API** protobuf(Protocol Buffers)是Google开发的一种数据序列化协议,广泛应用于网络通信、数据存储等领域。它提供了一种高效、灵活且跨平台的方式来编码和解码结构化数据。...

    将treeView序列化Xml

    1. 序列化(保存到XML): - 使用`System.Xml.Serialization`命名空间中的`XmlSerializer`类来实现XML序列化。 - 创建一个`TreeViewData`实例,使用`TreeView`对象初始化它。 - 创建一个`StreamWriter`,指定要...

    14.序列化.doc

    1. **仅保存非静态成员变量**:序列化过程中,只有对象的非静态字段会被保存。因为静态变量属于类,而不是特定的对象,所以它们不会被序列化。 2. **递归序列化**:如果一个对象的成员变量是一个对象,那么这个子...

    vc++实现反射式数据库模版(3.序列化、反序列化与消息映射)

    4. **序列化/反序列化实现**:实现序列化和反序列化功能,使对象能够以某种格式(如XML、JSON或二进制)在内存和文件之间进行转换。 5. **消息映射的动态构建**:创建动态的消息映射系统,允许在运行时添加、删除或...

    自己写的一个序列化和反序列化的例子

    1. 序列化可能会暴露敏感数据,因此在处理包含敏感信息的对象时,需要谨慎。 2. 非序列化字段不会被保存,所以在反序列化后,这些字段的值会丢失。 3. 如果对象中引用了其他对象,这些对象也必须是可序列化的,否则...

    .net 序列化和反序列化 Json

    1. 序列化对象到JSON字符串: ```csharp using System.Json; // 定义一个简单的对象 public class Person { public string Name { get; set; } public int Age { get; set; } } // 创建一个Person实例 Person ...

    Json格式序列化和反序列化处理

    1. 序列化:将C#对象转换为JSON字符串 ```csharp using Newtonsoft.Json; class Person { public string Name { get; set; } public int Age { get; set; } } Person person = new Person { Name = "John", Age ...

    C#序列化和反序列化

    ### C#中的序列化与反序列化 #### 一、概念理解 序列化与反序列化是编程领域中经常遇到的概念。简而言之,**序列化**是指将对象的状态(即对象的数据)转换为可以存储或传输的形式的过程;而**反序列化**则是将...

    C#序列化,反序列化对象完整代码

    在C#编程中,序列化和反序列化是两个重要的概念,它们主要用于数据持久化、网络传输和跨进程通信等场景。序列化是将对象的状态转换为可存储或可传输的形式,而反序列化则是将这种形式的数据恢复为原来的对象状态。在...

    最全的.net序列化操作

    在.NET框架中,序列化和反序列化是两个至关重要的概念,它们被广泛应用于数据存储、网络通信以及状态保存等领域。本篇文章将深入探讨.NET中的序列化操作,特别是使用C#语言实现的各种方法,包括对象到XML、字符串的...

    PHP序列化 规则

    - **引用(r/R)**: 引用在序列化时用于保存对象的引用计数,反序列化时需确保引用关系的正确恢复。 **4. Unicode支持** 在PHP 6中,引入了`U`标识符来处理Unicode字符串。在PHP 5和PHP 4中,字符串是字节序列,...

    MFC序列化资料文档

    其中,序列化(Serialization)是MFC中的一个重要概念,它允许对象的状态被保存到磁盘或者在网络上传输,以便于之后恢复。序列化在数据持久化、对象复制以及网络通信等方面具有广泛的应用。 MFC序列化的基本思想是...

    Android 序列化对象存储到sharepreference

    1. 序列化对象:使用`ObjectOutputStream`将对象转换为字节数组。 2. Base64编码:使用`android.util.Base64`类的`encodeToString()`方法将字节数组转换为String。 3. 存储到SharedPreferences:使用`...

    C# 自定义工程文件-窗口值传递-序列化

    1.序列化:通过对象序列化,保存对象ProClass的两个属性到二进制文件中,然后再通过反序列化把保存2.的两个属性读出来。 窗体间变量的值传递:将Form1中设置的路径、工程名信息传递到Form2中 二、使用说明: 1....

    tesla-peer#LeetCode-Python-#0428. 序列化和反序列化 N 叉树1

    解题思路序列化:通过深度优先搜索的方式,递归遍历节点,以 root.val、len(root.children)、root.children 的顺序生成序列化结

    Java安全漫谈 - 07.反序列化篇(1)1

    1. **限制反序列化的数据源**:只接受来自可信来源的序列化数据,并确保数据在传输过程中得到保护。 2. **使用安全的序列化库**:选择已修复已知安全问题的库,并保持更新。 3. **自定义反序列化逻辑**:在`...

    C#之JSON序列化和反序列化

    1. 序列化选项:你可以通过设置序列化选项来自定义序列化过程,例如忽略空值、日期格式等。 2. 自定义转换器:当标准的序列化不能满足需求时,可以创建自定义的JsonConverter实现复杂类型的序列化和反序列化。 3. ...

    用序列化(Serializable)保存、读取对象

    - **流式序列化与数据结构序列化**: 流式序列化是Java的标准序列化方式,而数据结构序列化(如JSON、XML)更注重数据的可读性和互操作性。 - **序列化安全**: 序列化可以暴露敏感信息,因此需要注意安全问题,如避免...

    序列化保存对象到Cookie中

    1. 序列化和反序列化时要确保类的属性与反序列化的对象匹配,否则会导致反序列化失败。 2. Cookie大小有限制,通常不超过4KB,因此不适合存储大型对象或大量数据。 3. 对于敏感数据,应考虑使用HTTPS加密传输,或者...

Global site tag (gtag.js) - Google Analytics