java 对象流的简单使用
对象的输入输出流的作用: 用于写入对象 的信息和读取对象的信息。 使得对象持久化。
ObjectInputStream : 对象输入流
ObjectOutPutStream :对象输出流
简单的实例
1 import java.io.File;
2 import java.io.FileInputStream;
3 import java.io.FileOutputStream;
4 import java.io.IOException;
5 import java.io.ObjectInputStream;
6 import java.io.ObjectOutputStream;
7 import java.io.Serializable;
8
9 //创建要写入磁盘的类,这个类需要实现接口 Serializable(可系列化的)
10 class Student implements Serializable{
11
12 // 在这里保证了serialVersionUID 的唯一性,防止属性变量的临时改变,从而造成写入id与读取id不同
13 private static final long serialVersionUID = 1L;
14 int id ; //额外需要添加一个属性
15
16 String name ;
17 transient String sex; //transient修饰属性,表示暂时的,则这个属性不会被写入磁盘
18 transient int age;
19
20 public Student(String name,String sex,int age){
21 this.name = name;
22 this.sex = sex;
23 this.age = age;
24 }
25 }
26
27
28 public class objectIO {
29
30 /**
31 * @param args
32 * @throws IOException
33 * @throws ClassNotFoundException
34 */
35 public static void main(String[] args) throws IOException, ClassNotFoundException {
36 // TODO Auto-generated method stub
37
38 createObj();
39 readObj();
40 }
41
42 //(一)先写入对象
43 public static void createObj() throws IOException {
44 //1.创建目标路径
45 File file = new File("C:\\Users\\bg\\Desktop\\objTest.txt");
46 //2.创建流通道
47 FileOutputStream fos = new FileOutputStream(file);
48 //3.创建对象输出流
49 ObjectOutputStream objOP = new ObjectOutputStream(fos);
50 //4.创建类对象,并初始化
51 Student stu = new Student("玛丽苏", "男", 18);
52 //5.向目标路径文件写入对象
53 objOP.writeObject(stu);
54 //6.关闭资源
55 objOP.close();
56 }
57
58 //再读取对象
59 public static void readObj() throws IOException, ClassNotFoundException {
60 File file = new File("C:\\Users\\bg\\Desktop\\objTest.txt");
61 FileInputStream fis = new FileInputStream(file);
62 ObjectInputStream objIP = new ObjectInputStream(fis);
63 //读取对象数据,需要将对象流强制转换为 要写入对象的类型
64 Student stu = (Student)objIP.readObject();
65 System.out.println("\n name:"+stu.name+"\n sex:"+stu.sex+"\n age:"+stu.age);
66 objIP.close();
67 }
68
69 }
打印效果
name:玛丽苏
sex:null //后面的这连个属性使用了 transient修饰
age:0
用到方法:writeObject(Object o); //向磁盘写入对象
readObject(); //读取磁盘的对象,注意这里需要强制类型
对象输入输出流的使用注意点:
1.如果想将一个对象写入到磁盘中,那么对象所属的类必须要进行序列化,实现Serializable 接口,Serializable接口没有任何方法 ,是一个标记接口
2.如果对象所属的类的成员变量发生改变,你在读取原来的对象是就会报错,如果想要解决报错,保证serialVersionUID是唯一。
3.如果你不想将某些信息存入到磁盘 就可以同过transient关键字修饰成员变量
4.如果一个类中引用了另外的一个类,那么另外的这个类也要实现Serializable接口。
如果:

java 对象流的简单使用的更多相关文章
- Java对象流的使用
为了让对象持久化(把对象存储到本地),可以使用java的对象流处理对象,把对象的内容写到本地存储的文件中,也可以从本地文件中读取出来.也就是常说的序列化和反序列化 主要用到了ObjectInputSt ...
- java --对象流与对象的序列化
对象流 ObjectInputStream ObjectOutputStream类分别是InputStream和OutputStream的子类,对象输出流使用writeObject(Object ob ...
- 动车上的书摘-java对象流与序列化
摘要: 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 钢笔不限贵便宜,书法是来自心对手的交流.-泥沙砖瓦浆木匠 一.对 ...
- java对象流(一)
注意:字节数组流是可以不用关闭的(字符数组流要不要关闭暂时不清楚). 对象流的读数据和写数据方法分别是writeObject(Object o)和readObject(Object o). Objec ...
- java对象流(二)
对象流,可以将java中的对象转为字节进行输出.将对象写入文件时.文件输出流是将字节写入到文件中. 对象流是将给定的对象转化为一组字节.writeObject()方法就是将对象转为字节. 对象流,读的 ...
- Java对象流与序列化学习
对象流与序列化 对象流有两个类 ObjectOutputStream:将java对象的基本数据类型和图形写入OutputStream ObjectInputStream:对以前使用ObjectOutp ...
- JAVA IO流的简单总结+收集日志异常信息
1.字节流: IuputStream 所有字节输出流的超类 . 抽象类 ---- FileInputStream ---- BufferedInputStream:提供数据的读取效率,拓展方法(内部维 ...
- java对象流与序列化
Object流,直接把obj写入或读出. 前言: 比如 画图的程序,咣当画一个三角形出来,咣当画一正方形出来.然后存盘,当你下次再打开软件的时候三角形.方块还在原来的位置上.如果用面向对象的思维,三角 ...
- java 对象流
TV.java import java.io.*; public class TV implements Serializable{ String name; int price; public vo ...
随机推荐
- 推荐系统(1)--splitting approaches for context-aware recommendation
开篇语: 大一的时候.在实验室老师和师兄的带领下.我開始接触推荐系统.时光匆匆,转眼已是大三,因为大三课甚是少.于是便有了时间将自己所学的东西做下总结. 第一篇博客.献给过去三年里带我飞的老师和师兄们 ...
- “var arr = []; ”和 “var arr = {};” 的差别
1.面试题 var arr = []; var arr = {}; 比較上述代码有什么差别? 2.解析 var arr = [];是一个数组对象 var arr = {} ...
- 解决Install failed uid changed
出现此问题的原因大多是apk冲突造成,解决的办法如下: 将apk相关文件和相关内容删除 (1) 将手机root,Window上装root大师等工具root成功率较高 (2) 删除可能相关的文件:/da ...
- 为Html.EditorForModel自定义模版
对于MVC视图渲染来说,大家应该不会陌生,但对于模型的渲染,不知道是否听说过,主要是说Model通过它属性的相关特性(DataType,UIHint)来将它们自动渲染到View上,这是一个比较不错的技 ...
- [IT学习]Python pandas 学习
今天学习pandas来处理数据,结果用python 3.5.0的shell来调试,总是报错. 报错中包含如下字样: Traceback (most recent call last): File &q ...
- jquery ui tabs详解(中文)
1 属性1.11 ajaxOptions,当选项卡加载内容时,添加一个ajax选项.只有ajax时,添加的ajax选项才起作用.默认值为null.上面的例子中,添加了beforeSend和succes ...
- idea如何将普通文件夹转成java项目root目录/maven
转java项目 转maven 选中pom文件右键就能看到了
- I.MX6 Android CAN 命令行测试
/********************************************************************* * I.MX6 Android CAN 命令行测试 * 说 ...
- Redis in python, how do you close the connection?
down voteaccepted Just use redis.Redis. It uses a connection pool under the hood, so you don't have ...
- js中的call和apply方法
call方法: 语法:call(thisObj,[arg1,arg2,arg3,...]); 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call 方法可以用来代替另一个对象调用 ...