[Java]SerialZable接口的使用
2016-04-08 00:51
585 查看
github地址:https://github.com/lixiang0/DemoLibs
对象序列化是指将程序中创建的对象的状态信息转化为可持久化或者可传输的形式。特点是:1.可传输可持久化;2.统一性。
下面我们就学习Java中如何使用SerialZable进行对象的序列化。
本次我们首先创建一个User类,然后讲User类序列化到一个文件当中,之后再从文件当中恢复持久化的User对象状态信息。
第一步.穿件User类:
2.编写Activity类:
我们编写了一个Activity,Activity中只有一个包含TextView控件的LinearLayout。
3.添加读写权限:
4.运行结果:
总结:使用java原生的Serialzable进行序列化操作时还是比较简单易用的,缺点就是I/O的开销有点大。
对象序列化是指将程序中创建的对象的状态信息转化为可持久化或者可传输的形式。特点是: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的开销有点大。
相关文章推荐
- eclipse 使用gradle构建系统时候报错
- Java 日历的制作 心得 写给自己
- java基础-----2016.4.8
- 海康SDK-javademo实现
- Java 加载配置文件的方式
- eclipse开发环境搭建
- SpringMVC - controller中获取session
- 初识java,编写hello world语句
- Java开发者值得关注的7款新工具
- 5个强大的Java分布式缓存框架推荐
- 21. Merge Two Sorted Lists | Java最短代码实现
- JavaWEB 通过Listener理解域对象生命周期
- Java Math的floor、ceil、round方法
- MyEclipse 快捷键
- Java重构示例
- spring定时器时间表达式
- Java中文排序
- spring mvc 多数据源配置
- MyEclipse设置注释格式
- eclipse3.6通过axis2发布WEB Service