内存 I/O 流
介绍内存结构上的 I/O 流
JAVA I/O API 还提供类来访问内存结构的内容,即字符或字节数组,以及字符串。在某些用例中,此功能非常方便。
某些文件格式(JPEG 文件格式就是这种情况)需要在文件开头添加一个特殊字段,该字段给出文件某些部分或字段的长度。在某些情况下,无法提前计算这些部分。考虑压缩数据:计算 100 个整数的集合的大小很容易,但压缩后计算它就困难得多。使用正确的类,您可以在字节数组中创建此压缩流,并简单地获取写入字节的数量。本节末尾将介绍此示例。
读取和写入字符数组
CharArrayReader
和 CharArrayWriter
都包装了一个 char
数组,该数组在这些类的构造时指定。它们都是 Reader
和 Writer
(分别)的扩展,并且没有向这些类添加任何方法。
读取和写入字符串
StringReader
类也是抽象类 Reader
的扩展。它基于一个 String
,作为其构造函数的参数传递。它没有向 Reader
类添加任何方法。
StringWriter
有点不同。它包装了一个内部 StringBuffer
,并且可以向其追加字符。然后,您可以通过调用以下两种方法之一来获取此 StringBuffer
。
getBuffer()
:返回内部StringBuffer
。这里没有进行防御性复制。toString()
:通过调用内部StringBuffer
的toString()
方法返回一个字符字符串。
读取和写入字节数组
有两个类可用于读取和写入数组中的字节:ByteArrayInputStream
和 ByteArrayOutputStream
。
第一个允许您将字节数组的内容读取为 InputStream
,作为此类的构造函数的参数提供。
第二个允许您将字节写入字节数组。您可以修复此数组的初始大小,如果它已满,它将自动增长。写入字节后,您可以通过不同的方式获取此数组的内容。
size()
给出此数组中包含的字节数。toString()
将数组的内容作为字符字符串返回。此方法可以接受CharSet
作为参数以正确解码这些字节。toBytes()
返回此ByteArrayOutputStream
的内部数组的副本。
上次更新: 2023 年 1 月 25 日