在 Java 中通常使用字节和字符数组在应用程序内部临时存储数据。而这些数组又通常是数据读取来源或数据写入目标媒介。如果在程序运行时需要大量读取文件里的内容,那么你可以把文件加载到数组中,当然你可以通过数组的下标/索引来访问数组中文件的内容。但是如果组件被设计成从 InputStream 或 Reader,而不是从数组中读取某些特定的数据,你会使用什么组件呢?

阅读文章的过程中如果有任何疑问,欢迎添加笔者为好友,拉您进【七日书摘】微信交流群,一起交流技术,一起打造高质量的职场技术交流圈子,抱团取暖,共同进步。
七日书摘官方群.jpg

通过 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();

英文原文链接:http://tutorials.jenkov.com/java-io/arrays.html

------完------

推荐阅读:

Java IO 基础 之 文件(Files)

Java IO 基础 之 流(Streams)

Java IO 基础 之 管道(Pipes)

Java IO 基础 之 网络(Networking)

Java NIO 简明教程

更多学习讨论欢迎进入七日书摘官方群: 七日书摘官方群

七日书摘官方群群聊二维码.png

参考资料:
https://blog.csdn.net/i_am_kop/article/details/78513802
http://ifeve.com/java-io-network/