内容:通过文件存储对象
我们遇到的问题,需要保存对象到硬盘中,如何解决
这个就是用来解决的

用法:
1、创建流对象FileOutputstream
2、创建ObjectOutputStream对象与FileOutputStream关联
3、使用writeObject方法写入对象,或者通过readObject读取对象
对象要求继承Serializable接口,该接口为类提供一个序列号,用于读取的时候相对应,保证不出错,显示该序列号

具体如下代码:

//ObjectStreamDemo.java

public static void main(String[] args) throws IOException
{
writeObj();
}

##写入到硬盘,序列化

private static void writeObj() throws IOException
{
//1、明确存储对象的文件
FileOutputStream fos = new FileOutputStream("myfile\\obj.object");
//2、给操作文件对象加入写入对象功能
ObjectOutputStream oos = new ObjectOutputStream(fos); //3、调用写入对象的方法
oos.writeObject(new Person("xx",21)); //关闭
oos.close(); }

##读取,反序列化
private static void readObject() throws IOException, ClassNotFoundException
{
    //定义流对象关联存储文件
    FileInputStream fis = new FileInputStream("myfile\\obj.object");
    
    //创建读取对象的功能流对象
    ObjectInputStream ois = new ObjectInputStream(fis);
    
    //读取对象
    Person p = (Person)ois.readObject();
    
    System.out.println(p.toString());
}

//Person.java
public class Person implements Serializable
{
    private static final long serialVersionUID = 3475857768779718900L;
    private String name;
    private int age;
    public Person() {
        super();
        // TODO 自动生成的构造函数存根
    }
    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    //get、set和toString方法省略。
}

注意:
静态化的数据不会被序列化,某个数据不想序列化可以通过关键字transient修饰,瞬态

021.12 IO流 ObjectStream对象序列化的更多相关文章

  1. [javaSE] IO流(对象序列化)

    写入 获取ObjectOutputStream对象,new出来,构造参数:FileOutputStream对象目标文件 调用ObjectOutputStream对象的writeObject()方法,参 ...

  2. 021.13 IO流 RandomAccessFile对象

    对象和方法:RandomAccessFile:文件操作对象,Java提供getFilePointer:获取文件指针 特点:1.只能操作文件2.既能读,又能写3.里面维护了一个数组,内部定义了字符的读和 ...

  3. javaIO流(五)--对象序列化

    一.序列化概念 几乎只要是我们的java开发,就一定会存在有序列化的概念,而正是有序列化的概念逐步发展,慢慢也有了更多的系列化的标准.--所谓的对象序列化指的是将内存中保存的对象,以二进制数据流的形式 ...

  4. 【Java IO流】对象的序列化和反序列化

    对象的序列化和反序列化 1)对象序列化,就是将Object对象转换成byte序列,反之叫对象的反序列化. 2)序列化流(ObjectOutputStream),是字节的过滤流—— writeObjec ...

  5. IO流(File类,IO流的分类,字节流和字符流,转换流,缓冲流,对象序列化)

    1.File类 File类可以在程序中 操作文件和目录.File类是通过建立File类对象,在调用File类的对象来进行相关操作的. 示例: public class Demo01 { public  ...

  6. File类与常用IO流第十章——序列化流

    第十章.序列化流 序列化流和反序列化流概述 序列化:用一个字节序列表示一个对象,该字节序列包含该对象的数据.对象的类型和对象中存储的属性等等信息.字节序列写出到文件后,相当于文件中持久保存了一个对象的 ...

  7. Java基础(八)——IO流3_对象流

    一.对象流 1.序列化与反序列化 序列化:将内存中的Java对象保存到磁盘中或通过网络传输出去. 反序列化:将磁盘文件中的对象还原为内存中的一个Java对象. 用途: (1)将对象保存到物理硬盘:比如 ...

  8. I/O 流和对象序列化

    一.I/O 流(java 如何实现与外界数据的交流) 流定义: 任何有能力产出数据的数据源对象或者有能力接收数据的数据源对象.他屏蔽了实际的I/O设备处理数据的细节. 1.Input/Output:指 ...

  9. JAVA基础学习day22--IO流四-对象序列化、管道流、RandomAccessFile、DataStream、ByteArrayStream、转换流的字符编码

    一.对象序列化 1.1.对象序列化 被操作的对象需要实现Serializable接口 1.2.对象序列化流ObjectOutputStream与ObjectInputStream ObjectInpu ...

随机推荐

  1. oracle:ORA-00911: 无效字符 问题和解决---Eclipse中的SQL语句不能加分号

    eclipse中原sql: 异常: 原因:Eclipse中的SQL语句不能加分号 去掉分号,正常执行,插入成功. 这里把id设为了主键,具有唯一性,重复插入同一id执行插入失败,ORA-00001号错 ...

  2. iOS开源项目周报0309

    由OpenDigg 出品的iOS开源项目周报第十期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等.LazyScro ...

  3. 如何让自己的网站也能实现HTTPS访问 阿里云 转

    转 自  http://jingyan.baidu.com/article/90895e0fd9903164ec6b0bf7.html?qq-pf-to=pcqq.group 最近搞微信小程序,服务器 ...

  4. MySQL---6、可视化工具工具之SQLYog安装配置

    一.安装文件包下载 https://pan.baidu.com/share/link?shareid=4149265923&uk=724365661&fid=2642450782 二. ...

  5. Kinect1驱动 PCL OpenCV ROS 安装

    1. OpenCV安装 1)在终端安装依赖项sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff4-dev li ...

  6. Spring_Spring与DAO_Spring的事务管理

    一.Spring的事务管理 在Spring中通常可以通过以下三种方式来实现对事务的管理: 使用Spring的事务代理工厂管理事务 使用Spring的事务注解管理事务 使用AspectJ的AOP配置管理 ...

  7. hdu 2049 考新郎

    假设一共有N对新婚夫妇,其中有M个新郎找错了新娘,求发生这种情况一共有多少种可能. 和之前那道题一样,是错排,但是要乘上排列数. 选对的人有C(N,M)个组合,将它们排除掉,剩下的人就是错排了 #in ...

  8. 解决docker启动错误 error creating overlay mount to /var/lib/docker/overlay2

    原文 最近在centos7.1使用docker运行redis镜像,出现下面的错误: /usr/bin/docker-current: Error response from daemon: error ...

  9. js中作用域链和作用域

    作用域 在JavaScript中,我们可以将作用域定义为一套规则,这套规则用来管理引擎如何在当前作用域以及嵌套的子作用域中根据标识符名称(变量名或者函数名)进行变量查找. 经过研究<高级程序设计 ...

  10. Node.js 的安装

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 的运行环境,简单的说就是运行在服务端的 JavaScript.所以学起来还是比较容易接受的. Node.js 使用事件驱动 ...