系列中的上一篇
当前教程
内存 I/O 流
这是本系列的最后一篇!

系列中的上一篇: 装饰 I/O 流

内存 I/O 流

 

介绍内存结构上的 I/O 流

JAVA I/O API 还提供类来访问内存结构的内容,即字符或字节数组,以及字符串。在某些用例中,此功能非常方便。

某些文件格式(JPEG 文件格式就是这种情况)需要在文件开头添加一个特殊字段,该字段给出文件某些部分或字段的长度。在某些情况下,无法提前计算这些部分。考虑压缩数据:计算 100 个整数的集合的大小很容易,但压缩后计算它就困难得多。使用正确的类,您可以在字节数组中创建此压缩流,并简单地获取写入字节的数量。本节末尾将介绍此示例。

 

读取和写入字符数组

CharArrayReaderCharArrayWriter 都包装了一个 char 数组,该数组在这些类的构造时指定。它们都是 ReaderWriter(分别)的扩展,并且没有向这些类添加任何方法。

 

读取和写入字符串

StringReader 类也是抽象类 Reader 的扩展。它基于一个 String,作为其构造函数的参数传递。它没有向 Reader 类添加任何方法。

StringWriter 有点不同。它包装了一个内部 StringBuffer,并且可以向其追加字符。然后,您可以通过调用以下两种方法之一来获取此 StringBuffer

  1. getBuffer():返回内部 StringBuffer。这里没有进行防御性复制。
  2. toString():通过调用内部 StringBuffertoString() 方法返回一个字符字符串。

 

读取和写入字节数组

有两个类可用于读取和写入数组中的字节:ByteArrayInputStreamByteArrayOutputStream

第一个允许您将字节数组的内容读取为 InputStream,作为此类的构造函数的参数提供。

第二个允许您将字节写入字节数组。您可以修复此数组的初始大小,如果它已满,它将自动增长。写入字节后,您可以通过不同的方式获取此数组的内容。

  1. size() 给出此数组中包含的字节数。
  2. toString() 将数组的内容作为字符字符串返回。此方法可以接受 CharSet 作为参数以正确解码这些字节。
  3. toBytes() 返回此 ByteArrayOutputStream 的内部数组的副本。

上次更新: 2023 年 1 月 25 日


系列中的上一篇
当前教程
内存 I/O 流
这是本系列的最后一篇!

系列中的上一篇: 装饰 I/O 流