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中,就可以了。