设为首页 加入收藏

TOP

Java 对象流的简单使用
2016-12-12 08:15:31 】 浏览:6404
Tags:Java 对象 简单 使用

对象的输入输出流的作用: 用于写入对象 的信息和读取对象的信息。 使得对象持久化。


ObjectInputStream : 对象输入流


ObjectOutPutStream :对象输出流


简单的实例


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


//创建要写入磁盘的类,这个类需要实现接口 Serializable(可系列化的)
class Student implements Serializable{

// 在这里保证了serialVersionUID 的唯一性,防止属性变量的临时改变,从而造成写入id与读取id不同
private static final long serialVersionUID = 1L;
int id ; //额外需要添加一个属性

String name ;
transient String sex; //transient修饰属性,表示暂时的,则这个属性不会被写入磁盘
transient int age;

public Student(String name,String sex,int age){
this.name = name;
this.sex = sex;
this.age = age;
}
}



public class objectIO {


/**
* @param args
* @throws IOException
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws IOException, ClassNotFoundException {
// TODO Auto-generated method stub


createObj();
readObj();
}

//(一)先写入对象
public static void createObj() throws IOException {
//1.创建目标路径
File file = new File("C:\\Users\\bigerf\\Desktop\\objTest.txt");
//2.创建流通道
FileOutputStream fos = new FileOutputStream(file);
//3.创建对象输出流
ObjectOutputStream objOP = new ObjectOutputStream(fos);
//4.创建类对象,并初始化
Student stu = new Student("玛丽苏", "男", 18);
//5.向目标路径文件写入对象
objOP.writeObject(stu);
//6.关闭资源
objOP.close();
}

//再读取对象
public static void readObj() throws IOException, ClassNotFoundException {
File file = new File("C:\\Users\\bigerf\\Desktop\\objTest.txt");
FileInputStream fis = new FileInputStream(file);
ObjectInputStream objIP = new ObjectInputStream(fis);
//读取对象数据,需要将对象流强制转换为 要写入对象的类型
Student stu = (Student)objIP.readObject();
System.out.println("\n name:"+stu.name+"\n sex:"+stu.sex+"\n age:"+stu.age);
objIP.close();
}


}


打印效果


用到方法:writeObject(Object o);  //向磁盘写入对象


     readObject();  //读取磁盘的对象,注意这里需要强制类型


对象输入输出流的使用注意点:
1.如果想将一个对象写入到磁盘中,那么对象所属的类必须要进行序列化,实现Serializable 接口,Serializable接口没有任何方法 ,是一个标记接口
2.如果对象所属的类的成员变量发生改变,你在读取原来的对象是就会报错,如果想要解决报错,保证serialVersionUID是唯一。
3.如果你不想将某些信息存入到磁盘 就可以同过transient关键字修饰成员变量
4.如果一个类中引用了另外的一个类,那么另外的这个类也要实现Serializable接口。


如果:


  


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇OK6410,MMU,内存管理 杂谈 下一篇Java 配置信息类 Properties 的简..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目