提示

Java IO 相关。@ermo

# Java IO

无论是文字、图片、视频,在计算机中都用二进制进行存储。

java.io 包中有一整套用于操作流和文件的类。IO 就是 input/output 的缩写,输入流(input stream)用于将数据从源读取到程序中,输出流(output stream)用于将数据从程序中输出到指定 IO 设备(文件、键盘、显示器等)。

用于操作字节的输入输出流为 InputStreamOutputStream,这两个类都是抽象类,实际使用时应该使用对应的子类进行流的输入和输出操作。

# 字节流

# FileInputStream-FileOutputStream

详见 FileInputStream 示例

详见 FileOutputStream 示例

# ByteArrayInputStream-ByteArrayOutputStream

详见 ByteArrayInputStream 示例

详见 ByteArrayOutputStream 示例

# DataInputStream-DataOutputStream

学习 DataInputStream/DataOutputStream 前应该简单了解下设计模式中的装饰器模式。

装饰器模式(Decorator Pattern)的作用是动态的给一个类添加一些额外的职责。

详见 装饰器模式示例

详见 DataOutputStream 示例

详见 DataInputStream 示例

# BufferedInputStream-BufferedOutputStream

详见 BufferedOutputStream 示例

详见 BufferedInputStream 示例

# ObjectInputStream-ObjectOutputStream

详见 ObjectOutputStream 示例

详见 ObjectInputStream 示例

# 字符流

面向字节的流不便于处于 Unicode 信息,Unicode 中每个字符都是使用多个字节存储信息。

所以单独抽出 WriterReader 这两个抽象类,实现这些类的子类的读写操作都是基于2个字节的 char 值的,也就是 Unicode 码元。

# InputStreamReader-OutputStreamWriter

详见 InputStreamReader 示例

详见 OutputStreamWriter 示例

# FileReader-FileWriter

详见 FileReader 示例

详见 FileWriter 示例

# StringReader-StringWriter

详见 StringReader 示例

详见 StringWriter 示例

# BufferedReader-BufferedWriter

详见 BufferedReader 示例

详见 BufferedWriter 示例

# PrintWriter

详见 PrintWriter 示例

参考

  • Java 核心技术卷二