`
blues1021
  • 浏览: 139586 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

javaI/O中FileOut/InputStream借助ObjectOut/IntputStream写入和读取序列化之嵌套原理

阅读更多

一、FileOutputStream和ObjectOutputStream实现写入:
public static void main (String[] args){

      // Create an Employee object
      int[] days = {8, 10, 6, 8, 8};
      Employee emp = new Employee("Bill", 8.50, days);
try{
         FileOutputStream foStream = new FileOutputStream
("employee.dat") ;//在当前的项目下创建,dat为代码处理的data文件
        ObjectOutputStream ooStream = new ObjectOutputStream (foStream);
        ooStream.
writeObject (emp) ;//在用foStream初始化后 writeObject(emp), 将对象状态保存称序列化
                            // for(int i=0;i<5;i++) FileOutputStream 提供了write(byte b[]) write(int b)的方法
                         // foStream.write(days[i]);
        
foStream.flush();     //却是用foStream来强制输出和关闭
                                          //extends from OutputStream :force any buffered output bytes to written out
        
foStream.close();          //releases any system resources associated with this stream.
      }catch (Exception e){
         System.out.println ("Error during output: " + e.toString());
      }
}
二、FileInputStream和ObjectInputStream实现读出:
public static void main (String[] args){
Employee emp;
      try{
         FileInputStream fiStream = new FileInputStream ("employee.dat");
         ObjectInputStream oiStream = new ObjectInputStream (fiStream);
         emp = (Employee)
oiStream.readObject() ; //同样用ObjectInputStream方法实现 , 读取文件中对象还原称反序列化 
               //FileInputStream 只能read(byte b[])
       
  fiStream.close();   //用FileInputStream来关闭       //releases system resources associated with this stream.
         System.out.println (emp);/ /
Object类中指明类的toString碰到“println”之类的输出方法时会自动调用 ,不用显式打出来
      }catch (Exception e){
         System.out.println ("Error during input: " + e.toString());
      }
   }
总结: 1.FileOutputStream和ObjectOutputStream协作时,用FileOutputStream来处理文件;
2.再去初始化ObjectOutputStream,
使得ObjectOutputStream嵌套了FileOutputStream,
用来writeObject(obj)实现了到内存中的读取,而用FileOutputStream实现flush close与磁盘文件打交道。
因为两个对象指向同一个对象磁盘"employee.dat"引用(没有使用clone方法)。

3FileInputStream和ObjectInputStream也是同样的处理方式。

分享到:
评论

相关推荐

    java 对象的序列化与反序列化

    Java对象的序列化和反序列化是Java编程中一项重要的技术,主要用于将对象的状态转换为字节流,以便存储或在网络上传输。这一过程对于理解Java的IO操作、持久化数据以及实现分布式通信等场景非常关键。 首先,我们来...

    java序列化存储读取文件.doc

    根据提供的文件标题、描述以及部分代码内容,我们可以总结出该文档主要关注的是Java中的序列化技术,特别是如何利用序列化来存储和读取文件。接下来,我们将深入探讨这些知识点。 ### Java序列化简介 Java序列化是...

    什么是Java的序列化和反序列化?如何实现对象的序列化和反序列化?(java面试题附答案).txt

    ### Java中的序列化与反序列化详解 #### 一、概念理解 在Java中,序列化(Serialization)指的是将对象的状态转化为字节流的过程,这一过程通常用于存储对象或者在网络中传输对象。相反地,反序列化...

    序列化、反序列化图文例子

    序列化和反序列化是计算机科学中的重要概念,特别是在数据存储、网络通信和持久化对象等领域。简单来说,序列化是将对象的状态转换为可存储或传输的数据格式,而反序列化则是将这些数据恢复为原来的对象状态。在这个...

    自己写的一个序列化和反序列化的例子

    本示例旨在教你如何在Java中实现自定义的序列化和反序列化过程。让我们深入探讨这两个概念。 **序列化:** 序列化是将对象的状态转化为可存储或可传输的格式的过程。在Java中,如果你想要一个对象能够被序列化,...

    java中对象的序列化

    Java中的对象序列化是一种将Java对象转换为字节流的过程,以便可以持久存储或在网络上传输。这在处理跨进程通信、远程方法调用(RMI)、数据存储以及需要对象状态持久化的场景中非常有用。要实现Java对象的序列化,...

    java.io.Serializable序列化问题

    ### Java.io.Serializable 序列化问题详解 #### 一、序列化的概念与作用 在 Java 编程语言中,序列化是一种将对象的状态(即成员变量的值)转换为可以存储或传输的形式的过程。通常,这种形式是字节流,但也可以是...

    序列化与反序列化例子

    本文将深入探讨Java语言中的序列化和反序列化,并通过一个简单示例进行解释。 首先,我们需要理解什么是序列化。序列化是将一个对象的状态转化为可存储或可传输的数据格式的过程。在Java中,如果一个类需要支持序列...

    基于java的存储与读取对象.zip

    在Java编程语言中,对象的存储与读取是常见的任务,尤其在持久化数据、序列化和网络传输等场景中。本教程将深入探讨如何在Java中实现对象的存储和读取,主要涉及以下几个关键知识点: 1. **对象序列化...

    JAVA输入流和输出流

    在Java编程语言中,输入流(InputStream)和输出流(OutputStream)是I/O操作的核心概念,它们构成了Java I/O框架的基础。输入流用于从数据源读取数据,而输出流则用于向目的地写入数据。这两类流为处理各种类型的...

    类的序列化

    4. **ObjectOutputStream和ObjectInputStream**:在Java中,`ObjectOutputStream`用于将对象写入输出流,实现对象的序列化;而`ObjectInputStream`则用于从输入流中读取对象,实现对象的反序列化。 5. **序列化操作...

    序列化与反序列化的参考demo

    在编程领域,序列化与反序列化是两个关键的概念,主要用在数据持久化、网络传输和跨进程通信等场景。下面将详细讲解这两个概念及其相关的应用。 **序列化(Serialization)** 序列化是将对象的状态信息转换为可以...

    java读取excel poi 方法

    ### Java读取Excel POI方法详解...通过上述介绍和示例,我们了解了 Java 中使用 POI 处理 Excel 文件的基本方法,包括创建、读取和修改 Excel 文件等核心操作。这对于日常开发中涉及的数据处理任务具有重要的参考价值。

    Java中文件的输入与输出.pdf

    本文将深入探讨Java中如何进行文件的读取和写入操作,主要涉及`InputStream`、`OutputStream`及其相关的子类,如`BufferedReader`和`PrintWriter`。 `InputStream`和`OutputStream`是Java I/O流的基础,它们是所有...

    java使用POI读取excel文件教程

    这个名字虽然听起来略带戏谑意味,但实际上 HSSF 是一个非常强大且稳定的 API,它允许开发者使用纯 Java 代码来读取、写入和修改 Excel 文件。 HSSF 建立在 POIFS(Portable Office Interchange File Formats)的...

    Java实现读取键盘输入保存到txt文件,再统计并输出每个单词出现次数的方法

    该方法涉及到Java文件I/O操作、字符串遍历和运算实现统计功能的相关技巧。 首先,我们需要使用Java的Scanner类来读取键盘输入,并将其保存到txt文件中。具体代码如下: ```java Scanner scanner = new Scanner...

    Java-IO.rar_java IO

    在给定的"Java-IO.rar_java IO"主题中,有两个主要的知识点:文件拷贝和序列化。 首先,我们来看文件拷贝的功能。在Java中,实现文件拷贝可以通过使用`java.io`包中的`FileInputStream`和`FileOutputStream`类来...

    JAVA_poi读取Excel.pdf

    JAVA POI 是 Apache 的一个子项目,提供了一个纯 Java 的 Excel 解决方案,可以用来读取和写入 Excel 文件。下面是关于 JAVA POI 读取 Excel 的知识点摘要。 POI 简介 POI 是 Apache 的一个子项目,提供了一个纯 ...

    基于Java的源码-从网络取得文件.zip

    在Java编程语言中,从网络获取文件是一项常见的任务,它涉及到网络编程和文件I/O操作。这个"基于Java的源码-从网络取得文件.zip"的压缩包很可能包含了一个或多个示例程序,用于演示如何使用Java API从互联网下载文件...

Global site tag (gtag.js) - Google Analytics