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(Protocol Buffers)是Google开发的一种数据序列化协议,广泛应用于网络通信、数据存储等领域。它提供了一种高效、灵活且跨平台的方式来编码和解码结构化数据。...
1. 序列化(保存到XML): - 使用`System.Xml.Serialization`命名空间中的`XmlSerializer`类来实现XML序列化。 - 创建一个`TreeViewData`实例,使用`TreeView`对象初始化它。 - 创建一个`StreamWriter`,指定要...
1. **仅保存非静态成员变量**:序列化过程中,只有对象的非静态字段会被保存。因为静态变量属于类,而不是特定的对象,所以它们不会被序列化。 2. **递归序列化**:如果一个对象的成员变量是一个对象,那么这个子...
4. **序列化/反序列化实现**:实现序列化和反序列化功能,使对象能够以某种格式(如XML、JSON或二进制)在内存和文件之间进行转换。 5. **消息映射的动态构建**:创建动态的消息映射系统,允许在运行时添加、删除或...
1. 序列化可能会暴露敏感数据,因此在处理包含敏感信息的对象时,需要谨慎。 2. 非序列化字段不会被保存,所以在反序列化后,这些字段的值会丢失。 3. 如果对象中引用了其他对象,这些对象也必须是可序列化的,否则...
1. 序列化对象到JSON字符串: ```csharp using System.Json; // 定义一个简单的对象 public class Person { public string Name { get; set; } public int Age { get; set; } } // 创建一个Person实例 Person ...
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#编程中,序列化和反序列化是两个重要的概念,它们主要用于数据持久化、网络传输和跨进程通信等场景。序列化是将对象的状态转换为可存储或可传输的形式,而反序列化则是将这种形式的数据恢复为原来的对象状态。在...
在.NET框架中,序列化和反序列化是两个至关重要的概念,它们被广泛应用于数据存储、网络通信以及状态保存等领域。本篇文章将深入探讨.NET中的序列化操作,特别是使用C#语言实现的各种方法,包括对象到XML、字符串的...
- **引用(r/R)**: 引用在序列化时用于保存对象的引用计数,反序列化时需确保引用关系的正确恢复。 **4. Unicode支持** 在PHP 6中,引入了`U`标识符来处理Unicode字符串。在PHP 5和PHP 4中,字符串是字节序列,...
其中,序列化(Serialization)是MFC中的一个重要概念,它允许对象的状态被保存到磁盘或者在网络上传输,以便于之后恢复。序列化在数据持久化、对象复制以及网络通信等方面具有广泛的应用。 MFC序列化的基本思想是...
1. 序列化对象:使用`ObjectOutputStream`将对象转换为字节数组。 2. Base64编码:使用`android.util.Base64`类的`encodeToString()`方法将字节数组转换为String。 3. 存储到SharedPreferences:使用`...
1.序列化:通过对象序列化,保存对象ProClass的两个属性到二进制文件中,然后再通过反序列化把保存2.的两个属性读出来。 窗体间变量的值传递:将Form1中设置的路径、工程名信息传递到Form2中 二、使用说明: 1....
解题思路序列化:通过深度优先搜索的方式,递归遍历节点,以 root.val、len(root.children)、root.children 的顺序生成序列化结
1. **限制反序列化的数据源**:只接受来自可信来源的序列化数据,并确保数据在传输过程中得到保护。 2. **使用安全的序列化库**:选择已修复已知安全问题的库,并保持更新。 3. **自定义反序列化逻辑**:在`...
1. 序列化选项:你可以通过设置序列化选项来自定义序列化过程,例如忽略空值、日期格式等。 2. 自定义转换器:当标准的序列化不能满足需求时,可以创建自定义的JsonConverter实现复杂类型的序列化和反序列化。 3. ...
- **流式序列化与数据结构序列化**: 流式序列化是Java的标准序列化方式,而数据结构序列化(如JSON、XML)更注重数据的可读性和互操作性。 - **序列化安全**: 序列化可以暴露敏感信息,因此需要注意安全问题,如避免...
1. 序列化和反序列化时要确保类的属性与反序列化的对象匹配,否则会导致反序列化失败。 2. Cookie大小有限制,通常不超过4KB,因此不适合存储大型对象或大量数据。 3. 对于敏感数据,应考虑使用HTTPS加密传输,或者...