javaIO的类备忘

Java类库中的I/O类分成输入和输出两部分,通过继承,任何自InputStream或Reader派生而来的类都含有名为read()的基本方法,用于读取单个字节或字节数组;同样,任何自OutputStream或Writer派生的类都含有名为write()的方法,用于写单个字节或字节数组。

我们很少使用单一的类来创建流对象,而是通过叠合多个对象来提供所期望的功能(装饰器模式)。

InputStream的作用是用来表示那些从不同数据源产生输入的类。

InputStream类型
数据源类别 功能 来源和去除
ByteArrayInputStream 字节数组 允许将内存的缓冲区当做InputStream CharArrayReader
StringBufferInputStream(已弃用) String对象 将String转换成InputStream StringReader
FileInputStream 文件 用于从文件中读取信息 FileReader
PipedInputStream 管道 产生用于写入相关PipedOutputStream的数据,实现管道化概念 PipedReader
SequenceInputStream 其他种类流组成的序列,以便合并流 将两个或者多个InputStream对象转换成单一InputStream
FilterInputStream 其他数据源,如Internet连接 抽象类,作为装饰器的接口 FilterReader
FilterInputStream类型
  功能 来源和去处
DataInputStream   按照可移植方式从流读取基本数据类型 除了readLine(),则仍正常使用DataInputStream
BufferedInputStream   防止每次都得进行实际写操作,代表使用缓冲区 BufferedReader
LineNumberInputStream(已弃用)   跟踪输入流中的行号,可调用getLineNumber()和setLineNumber() LineNumberReader
PushbackInputStream  

具有“能弹出一个字节的缓冲区”。因此可以将督导的最后一个字符回退

 PushbackReader

OutputStream类型
  功能 来源和去处
ByteArrayOutputStream   在内存中创建缓冲区,所有送往流的数据都要放置在此缓冲区中 CharArrayWriter
FileOutputStream   用于将信息写至文件 FileWriter
PipedOutputStream   任何写入其中的信息都会自动作为相关PipedOutputStream的输出,实现管道化概念 PipedWriter
FilterOutputStream   抽象类,作为装饰器的接口 FilterWriter
      (无对应类)StringWriter
FilterOutputStream
  功能 来源和去处
DataOutputStream   同InputStream
PrintStream   用于产生格式化输出,其中DataOutputStream处理数据的存储,PrintStream处理显示 PrintWriter
BufferedOutputStream   避免每次都实际写,可以调用flush清空缓冲区 BufferedWriter
      StreamTokenizer(使用Reader的构造器)

Reader和Writer主要是为了国际化,老的I/O仅支持8位的字节流,不能很好地处理16位的Unicode字符。

InputStream和OutputStream向Reader和Writer的转换用到了"适配器",InputStreamReader,OutputStreamWriter

* 尽量尝试用Reader和Writer,而一旦无法成功编译,则使用面向字节的类库,如java.util.zip是面向字节的

* 无论何时使用readLine(),都不应该使用DataInputStream,而应该使用BufferedReader


RandomAccessFile适用于由大小已知的记录组成的文件。

实现了InputStream和OutputStream接口,但未适用它们的任何功能,它是一个完全独立的类

只有RandomAccessFile支持搜寻方法,并且只适用于文件。

原文地址:https://www.cnblogs.com/fengbeihong/p/2840407.html