Java IO:字节和字符数组
时间:2020-01-09 14:19:58 来源:igfitidea点击:
字节和字符数组通常在Java中用于在应用程序内部临时存储数据。因此,数组也是数据的通用源或者目标。如果我们需要在程序运行时大量访问该文件的内容,则可能还希望将文件加载到数组中。当然,我们可以通过索引它们直接访问这些数组。但是,如果我们有一个旨在从InputStream或者Reader而不是数组中读取某些特定数据的组件,该怎么办?
通过InputStream或者Reader读取数组
为了使这样的组件从数组中的数据中读取,我们必须将byte或者char数组包装在" ByteArrayInputStream"或者" CharArrayReader"中。这样,可以通过包装流或者读取器读取数组中可用的字节或者字符。
这是一个简单的示例:
byte[] bytes = new byte[1024];
//write data into byte array...
InputStream input = new ByteArrayInputStream(bytes);
//read first byte
int data = input.read();
while(data != -1) {
//do something with data
//read next byte
data = input.read();
}
使用char数组执行相同操作非常类似于此示例。只需将char数组包装在CharArrayReader中,就可以了。
通过OutputStream或者Writer写入数组
也可以将数据写入到" ByteArrayOutputStream"或者" CharArrayWriter"中。我们所要做的就是创建一个" ByteArrayOutputStream"或者" CharArrayWriter",并将数据写入其中,就像写入其他任何流或者写入器一样。一旦将所有数据写入其中,只需调用方法" toByteArray()"或者" toCharArray",所有写入的数据均以数组形式返回。
这是一个简单的示例:
ByteArrayOutputStream output = new ByteArrayOutputStream();
output.write("This text is converted to bytes".getBytes("UTF-8"));
byte[] bytes = output.toByteArray();
使用char数组执行相同操作非常类似于此示例。只需将char数组包装在CharArrayWriter中,就可以了。

