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通信)
  • 对象的持久化保存
原文地址:https://www.cnblogs.com/rsdqc/p/5388631.html