在 Java 中通常使用字节和字符数组在应用程序内部临时存储数据。而这些数组又通常是数据读取来源或数据写入目标媒介。如果在程序运行时需要大量读取文件里的内容,那么你可以把文件加载到数组中,当然你可以通过数组的下标/索引来访问数组中文件的内容。但是如果组件被设计成从 InputStream 或 Reader,而不是从数组中读取某些特定的数据,你会使用什么组件呢?
阅读文章的过程中如果有任何疑问,欢迎添加笔者为好友,拉您进【七日书摘】微信交流群,一起交流技术,一起打造高质量的职场技术交流圈子,抱团取暖,共同进步。
通过 InputStream 或 Reader 读取数组(Reading Arrays via InputStream or Reader)
要从数组中读取数据,必须将字节或字符数组包装/封装在 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();
}
示例代码同样适用于读取字符数组,只需把字符数组封装在 CharArrayReader 中就可以了。
通过 OutputStream 或者 Writer 写数组(Writing to Arrays via OutputStream or Writer)
也可以把数据写入 ByteArrayOutputStream 或者 CharArrayWriter 中。你所要做的就是创建 ByteArrayOutputStream 或者 CharArrayWriter,并将数据写入其中,就像写入其它流或 Writer 一样。一旦所有数据都写入之后,只需调用 toByteArray() 或者 toCharArray() 方法,所有写入的数据就会以数组的形式返回。
示例如下:
ByteArrayOutputStream output = new ByteArrayOutputStream();
output.write("This text is converted to bytes".getBytes("UTF-8"));
byte[] bytes = output.toByteArray();
------完------
推荐阅读:
参考资料:
https://blog.csdn.net/i_am_kop/article/details/78513802
http://ifeve.com/java-io-network/