[Java]SerialZable接口的使用
来源:互联网 发布:python json库 编辑:程序博客网 时间:2024/06/05 07:39
github地址:https://github.com/lixiang0/DemoLibs
对象序列化是指将程序中创建的对象的状态信息转化为可持久化或者可传输的形式。特点是:1.可传输可持久化;2.统一性。
下面我们就学习Java中如何使用SerialZable进行对象的序列化。
本次我们首先创建一个User类,然后讲User类序列化到一个文件当中,之后再从文件当中恢复持久化的User对象状态信息。
第一步.穿件User类:
package string.pub.serial.entity;import java.io.Serializable;public class User implements Serializable{ /** * serialVersionUID和User类结构一起用来确定序列化的类是同一个类 */ private static final long serialVersionUID = 1L; String name="ruben"; int age=26; String sex="man"; String addr="shenzhen"; String describe="a coder"; @Override public String toString() { return "User [name=" + name + ", age=" + age + ", sex=" + sex + ", addr=" + addr + ", describe=" + describe + "]"; }}
2.编写Activity类:
我们编写了一个Activity,Activity中只有一个包含TextView控件的LinearLayout。
package string.pub.serial;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.io.StreamCorruptedException;import android.app.Activity;import android.os.Bundle;import android.widget.LinearLayout;import android.widget.TextView;import string.pub.serial.entity.User;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout ll=new LinearLayout(this); ll.setOrientation(LinearLayout.VERTICAL); StringBuilder sb=new StringBuilder(); //文件路径 File file=new File(this.getCacheDir().getAbsolutePath()+File.separator+"user.text"); try { file.createNewFile(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } //序列化User类 try { ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream(file)); out.writeObject(new User()); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //反序列化类 try { ObjectInputStream in=new ObjectInputStream(new FileInputStream(file)); try { User mUser=(User)in.readObject(); sb.append(mUser.toString()); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (StreamCorruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //显示反序列化之后的结果 TextView tv_content=new TextView(this); tv_content.setText(sb.toString()); ll.addView(tv_content); setContentView(ll); }}
3.添加读写权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
4.运行结果:
总结:使用java原生的Serialzable进行序列化操作时还是比较简单易用的,缺点就是I/O的开销有点大。
0 0
- [Java]SerialZable接口的使用
- java 接口的使用
- java 的接口使用
- Java接口的使用
- Java 接口的使用
- java接口的使用
- 《Android 开发艺术探索》读书笔记五 IPC机制之Serialzable接口和Parcelable接口
- java-FileFilter接口的使用
- java native 接口的使用
- java 接口interface的使用
- java Enumeration接口的使用
- Java中接口的使用
- java接口的基本使用
- java中接口的使用
- Java的短信接口的使用
- Java中Comparator接口和Comparable接口的使用
- java中Comparable接口和Comparator接口的使用
- java中外部接口与内部接口的使用
- [BZOJ3998][TJOI2015]弦论
- Hadoop学习三:hadoop的一些基本配置以及相关概念
- QT5 OpenGL(五,立体图形贴图)
- Python的几个文件操作小程序
- 2005年上海交通大学计算机研究生机试真题
- [Java]SerialZable接口的使用
- map的详细用法
- 1-HTML简介(标记、属性)
- Java中与时间相关的几个类(Date、Calendar、SimpleDateFormat)
- 2-链接-meta-表格-表单
- json 反序列化的时候遇到的问题整理
- C++实现栈
- java学习之路之数据库知识总结
- HDOJ 1323 Perfection(简单题)