码迷,mamicode.com
首页 > 编程语言 > 详细

Java IO流

时间:2018-02-11 10:46:34      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:write   技术分享   piped   函数   通过   写入   重点   建议   height   

首先上在网上找的InputStream和OutputStream的类图结构

技术分享图片

 

下面的是Reader 和Writer 的类图结构

技术分享图片

 

挑重点的讲解一下

1.ByteArrayInputStream和ByteArrayOutputStream

顾名思义,字节输入流和字节输出流,ByteArrayInputStream( ) 在构造输入流的时候传进去的是字节数组,通过read()或者read(byte[] b, int off, int len)方法读取单个字符,如果读到结尾返回-1.第二种是一次读取字节数组,而不是一个一个的读.

ByteArrayOutputStream  字节数组输出流在内存中创建一个字节数组缓冲区,所有发送到输出流的数据保存在该字节数组缓冲区中

没有带参的构造函数,有两个方法write(int b)和write(byte[] b, int off, int len)方法, 将字节数组的参数传进去,通过ByteArrayOutputStream.write( )方法将字节数组  输出到内存的字节数组缓冲区中.

可以通过toByteArray()方法返回字节数组,writeTo(OutputStream out) 将缓冲区的字节数组写进 out 对象中

2.FileInputStream和FileOutputStream

最常用的IO流,FileInputStream(File f),File作为数据源,通过read() 单个读取字节,或者通过read(byte[ ] b)每次读取一个字节数组的长度.

FileOutputStream(File f),通过write(byte[ ] b),write(int b)方法将字节数组或字节写入文件输出流.  这样可以实现文件的写操作.

3.PipedInputStream 和 PipedOutputStream

管道输入流和输出流,主要的作用是实现线程之间的输入和输出操作

管道输入流应该连接到管道输出流;管道输入流提供要写入管道输出流的所有数据字节。通常,数据由某个线程从 PipedInputStream 对象读取,并由其他线程将其写入到相应的 PipedOutputStream。不建议对这两个对象尝试使用单个线程,因为这样可能死锁线程。管道输入流包含一个缓冲区,可在缓冲区限定的范围内将读操作和写操作分离开。如果向连接管道输出流提供数据字节的线程不再存在,则认为该管道已损坏。 

在一个线程中通过PipedOutputStream的write()方法写进输入流,然后 在另一个线程中使用PipedInputStream.read()方法将输出流的内容读出来. 

他们之间通过PipedOutputStream的connect(PipedInputStream in)或者PipedInputStream的connect(PipedInputStream  out)方法关联,实现 线程之间的流的传输.

 


 

Java IO流

标签:write   技术分享   piped   函数   通过   写入   重点   建议   height   

原文地址:https://www.cnblogs.com/stevehu1231/p/8440344.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!