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