6. Java IO: Byte & Char Arrays

想要查看此教程的目录请点击:Java IO教程目录贴地址


在一个Java应用中,字节数组和字符数组经常用来在程序内部临时存储数据。它们也是常规的数据源或数据目的地。如果你需要在程序运行的时候访问文件内容,也可以把文件加载到数组中。当然,你可以通过数组的下标来访问文件的内容。如果你设计一个组件用来从InputStream或Reader读取特定的数据并且不用数组,那该怎么办?

通过InputStream或Reader读数组

去写一个从数组读取数据的组件,你需要用ByteArrayInputStream或CharArrayReader包装一下字节或字符数组。这样,数组中的字节或字符就可以通过包装的stream或reader来读取了。
这里有一个简单的例子:

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();
}

这个demo也同样适用于字符数组。只是利用CharArrayReader来做这件事,你可以完成的。

通过OutputStream或Writer写入到数组

同样的去写数据,可以用ByteArrayOutputStream或CharArrayWriter。你需要做的事情就是创建一个ByteArrayOutputStream或CharArrayWriter,然后向这里面写数据,就像你用其他的stream或writer一样。当所有数据写完的时候,只是简单的调用oByteArray()或toCharArray方法,所有的数据就可以以数组的形式返回。
这里有一个简单的例子:

ByteArrayOutputStream output = new ByteArrayOutputStream();

output.write("This text is converted to bytes".getBytes("UTF-8"));

byte[] bytes = output.toByteArray();

这个demo也同样适用于字符数组。只是利用CharArrayWriter来做这件事,你可以完成的。

你可能感兴趣的:(6. Java IO: Byte & Char Arrays)