文档章节

JavaSE 对象流

博为峰教研组
 博为峰教研组
发布于 2017/04/09 17:39
字数 287
阅读 3
收藏 0

 

ObjectOutputStream和ObjectInputStream分别代表对象字节输出流和对象字节输入流,其功能分别是:

ObjectOutputStream

提供了writeObject(Serializable)方法,将对象转化成字节流再输出到目标字节流中去。这一个过程称为序列化。需要序列化的类必须实现Serializable接口。

ObjectInputStream

提供了Object readObject()方法,将字节输入流转化成对象。这一个过程称为反序列化

   

示例1代码:

  class Student implements Serializable{

private String name;

private int age;

 

public Student(String name, int age) {

super();

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return "Student [name=" + name + ", age=" + age + "]";

}

}

public class TestObjectOutputStream {

public static void main(String[] args) {

ObjectOutputStream oos=null;

FileOutputStream fos=null;

try {

fos = new FileOutputStream("obj.dat");

oos=new ObjectOutputStream(fos);

Student s=new Student("Jack",20);

oos.writeObject(s);

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}finally{

try {

if(oos!=null)oos.close();

if(fos!=null)fos.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

 

 

 

示例2代码:

 

public class TestObjectInputStream {

public static void main(String[] args) {

ObjectInputStream ois=null;

FileInputStream fis=null;

try {

fis = new FileInputStream("obj.dat");

ois=new ObjectInputStream(fis);

Student s=(Student) ois.readObject();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} catch (ClassNotFoundException e) {

e.printStackTrace();

}finally{

try {

if(ois!=null)ois.close();

if(fis!=null)fis.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

 

}

 

© 著作权归作者所有

共有 人打赏支持
博为峰教研组
粉丝 50
博文 1224
码字总数 479077
作品 0
黄浦
程序员
私信 提问
Java 编程要点之 I/O 流详解

原文同步至: 本文详细介绍了 Java I/O 流的基础用法和原理。 字节流(Byte Streams) 字节流处理原始的二进制数据 I/O。输入输出的是8位字节,相关的类为 InputStream 和 OutputStream. 字节流...

waylau
2016/01/19
2.6K
8
大虾们求助攻!!java输入输出流: fis=null;为什么不能替代fis.close();释放资源???

以前学习javase时隐约就有这个疑惑,最近工作中发现这样的问题,拿出来向大家请教: 删除文件时却发现总是删除失败。而原因就是,我在readFile方法中,并没有进行close方法操作。 那么,问题...

itwriter
2014/09/18
1K
5
JAVASE之JAVAI/O流篇

一 Java IO IO流用来处理设备之间的数据传输。 Java程序中,对于数据的输入/输出操作以”流(stream)” 的方式进行。 java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标...

刘信坚
07/30
0
0
javaweb入门笔记(4)-request和response

javaweb入门笔记(4)-request和response 标签: javaweb [TOC] API: * Interface HttpServletResponse * [Interface HttpServletRequest](https://tomcat.apach...

brianway
2016/02/06
405
0
JAVASE中级笔记

n 内部类:定义在一个类内部的类,就称为内部类 u 内部类分为3种 ² 成员内部类:相当于成员变量 ² 局部内部类:定义在方法内部的,相当于局部变量(极少用到,了解即可) ² 匿名内部类:(...

超人学院
2016/07/26
41
0

没有更多内容

加载失败,请刷新页面

加载更多

GO redis 相关操作

在gopath 目录下安装 go get github.com/garyburd/redigo/redis package mainimport ("fmt""github.com/garyburd/redigo/redis")//定义一个全局链接池变量var pool *redis.Pool//......

汤汤圆圆
36分钟前
7
0
java8性特性,常用的lambda表达式

1、抽取多个对象中的某个属性,用数组接收 List<Student> students = new ArrayList<>(); List<String> names =students.stream().map(Student::getName).collect(Collectors.toList()); 2、......

Boss-x
37分钟前
8
0
flutter 子组件与父组件

无论是子组件还是父组件,任何时候initState()只执行一次,如果需要判断 就在build里面进行,不然无效的。

大灰狼wow
39分钟前
4
0
Rancher Labs引入全球首个多集群、多租户的Prometheus支持!

近日,Rancher Labs宣布加强对Prometheus的支持,提高Kubernetes集群的可见度。Rancher也因此成为唯一一个在多集群、多租户环境中支持Prometheus的解决方案。 Prometheus正迅速成为监控云原生...

RancherLabs
41分钟前
5
0
vue项目中api接口管理总结

默认vue项目中已经使用vue-cli生成,安装axios,基于element-ui开发,axiosconfig目录和api目录是同级,主要记录配置的相关。 1. 在axiosconfig目录下的axiosConfig.js import Vue from 'vue...

peakedness丶
44分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部