zoukankan      html  css  js  c++  java
  • java——IO流整理(一)

    一、基础

    1.字节、字符

    • 位(bit)   :二进制中的一个1或0称为1位
    • 字节(byte) :8个二进制位称为一个字节
    • 字符      :一个自然符号称为字符。英文符号(1个字节)、中文符号(2个字节)

    2.编码格式

    • ASCII        :有256字符组成,内部包含了对英文、符号及数字的定义
    • GB2312        :扩展后的中文字符集。内部包含了2万多个中文字符
    • ISO-8859-1   : 欧美字符集
    • Unicode        :包含了所有字符的字符集。内容有双字节组成
    • Utf-8            : 包含了大部分字符的字符集。实际使用中应用比较广泛的字符集

    二、IO

    1.概述

      IO是Input Output的缩写,表示输入与输出。IO按照不同的方式可以包含如下分类

        文件在读取或传输过程中连续的内容就称为流。

      2. 内容读取方式

        字节流方式和字符流方式

      3. 按照方向划分

        输入流(从源到程序称为输入流)和输出流(从程序到目标源称为输出流)

    2. 字节流方式处理

    1.输入流

    • FileInputStream           :按照字节流方式对内容进行读取(不适用缓存)
    • BufferedInputStream   :按照字节方式对内容进行读取(使用了缓存)
    • DataInputStream         :按照类型对内容进行读取
    • ObjectInputStream      :按照对象的类型进行数据的读取(反序列化过程中必须使用)
    • ByteArrayInputStream  : 提供一个byte型的输入缓冲区

    2.输出流

    • FileOutputStream      :对内容进行输出(未使用缓冲区)
    • BufferedOutputStream  :使用缓冲区对内容进行输出
    • DataOutputStream    :对内容按照类型进行存储
    • ObjectOutputStream     :对对象进行存储(序列化过程必须使用)
    • PrintStream                  :功能与OutputStream相似,但是提供了更加丰富的输出方式
    • ByteArrayOutputStream :对输出内容提供一个缓冲区

    3. 字节流方式处理

    1. 输入流

    • FileReader
    • BufferReader
    • CharArrayReader
    • StringReader

    2. 输出流

    • FileWriter
    • BufferWriter
    • CharArrayWriter
    • StringWriter
    • PrintWriter

    3.常见方法

    • Read() :读取内容
    • Write() :向媒体中写入内容
    • Flush() :刷新缓冲区,强制将内容写入到文件中
    • Close() :关闭当前对象

    三、 序列化与反序列化

    1.持久化存储

    将对象的内容进行长期的保存(对象内容时存储在内存中的,随着程序的关闭对象的信息也会丢失)。通过将对象的内容写入到文件中以实现文件内容的持久化保存

    2.序列化及反序列化

    2.1. 概念

    • 序列化

    将对象存储到文件的过程就成为序列化。

    • 反序列化

    将文件中的内容转换为对象的过程就成为反序列化

    2.2. 要求

    • 只有实现了Serializable接口的类才具有可序列化的能力
    • 如果类中使用了其他的类,则该类也必须实现Serializable接口
    • Static的内容是不会被序列化的(因为static成员是属于类的)
    • 如果对象中的某个属性不需要被序列化可以是transient进行修饰
    • 属性的访问修饰符是无法被序列化的
    • 不同版本的序列化文件无法兼容

    2.3. 实现步骤

    1) 自定义类并实现Serializable接口

    2) 创建ObjectOutput(Input)Stream对象

    3) 通过对象进行读取或写入

    4) 关闭流对象

    2.4. 优点

    以二进制形式存在,所以具有与平台无关性的特点(可以在各种平台上使用)。

    2.5. 应用

    • 网络中对象数据的传输(Socket通信)
    • 对象的持久化保存
  • 相关阅读:
    软件工程最后一次作业
    软件工程第四次作业
    软件工程第三次作业
    软件工程第一次作业
    软件工程第二次作业
    软件工程第一次作业
    2020年最后一次软工作业
    2020年第四次软工作业(第二次结对作业)
    2020年第三次软工作业(第一次结对作业)
    2020年第二次软工作业
  • 原文地址:https://www.cnblogs.com/rsdqc/p/5388631.html
Copyright © 2011-2022 走看看