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来做这件事,你可以完成的。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在经过一次没有准备的面试后,发现自己虽然写了两年的android代码,基础知识却忘的差不多了。这是程序员的大忌,没...
    猿来如痴阅读 8,036评论 3 10
  • 虽然写了一些javaIo流的总结,感觉依旧没有系统的了解javaIO,幸好从网上看到这一篇文章,觉得不错。整理记录...
    Marlon666阅读 2,801评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,632评论 19 139
  • 标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流等等,java中将输入输出抽象称为流,就好...
    navy_legend阅读 4,042评论 0 0
  • 雨,滴滴答答,下个不停,哗哗,雨水带来了巨大的凉意,瞬时觉得能量不够,只想去吃甜食来填补。一场秋雨一层凉,前几...
    想飞的树不如草阅读 2,372评论 0 1