【IO】中的InputStream类的read(),read(b),read(b,off,len)关于close()及其顺序发生的关系

来源:互联网 发布:软件服务外包发展方向 编辑:程序博客网 时间:2024/05/17 00:56

一、代码及其笔记演示:

package ioDemo.inputStream;import java.io.IOException;import java.io.InputStream;import org.junit.Test;/** * 一、类InputStream。<br> * 二、java.lang.Object->java.io.InputStream。<br> * 三、此类实现的接口:Closeable。<br> * 四、直接子类:ByteArrayInputStream,FileInputStream,FilterInputStream,InputStream,ObjectInputStream,StringBufferInputStream<br> * 五、public abstract class InputStream extends Object implements Closeable<br> * 六、此抽象类是表示字节输入流的所有类的超类。<br> * 七、构造方法:InputStream()<br> *  * 八、成员方法:<br> * (1) int avilable() :返回次输入流下一个方法调用可以不受阻塞地从此输入流读取或跳过的估计字节数。<br> * 注意:有些 InputStream 的实现将返回流中的字节总数,但也有很多实现不会这样做。<br> *       类 InputStream 的 available 方法总是返回 0。<br>  * (2) abstract int read():从输入流中读取数据的下一个字节。<br> * (3) int read(byte[] b):从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。<br> * (4) int read(byte[] b,int off,int len):将输入流中最多len个数据字节读入byte数组b中。<br> * (5) void close():关流<br> *  *@author <a"283505495@qq.com">lxd</a> *@version 1.0 2017-3-17 下午10:28:33 *@fileName InputSteam.java */public class InputSteam {/** * 测试read()、read(byte[] b)、read(byte[] b,int off,int len)、close()方法 * @throws IOException  */@Testpublic void test1() throws IOException{/** * 通过控制台输入是System.in * 通过文件读取是inputStream */System.out.println("----------------read()-----------------");InputStream inOne=System.in;int n2=inOne.read();System.out.print(n2+":"+(char)n2);System.out.println();System.out.println("----------------read(byte[] b,int off,int len)-----------------");InputStream inPart=System.in;byte[] b2=new byte[512];int n3=inPart.read(b2, 0, b2.length);for(int i=0;i<n3;i++){System.out.print((char)b2[i]);}System.out.println("----------------read(byte[] b)-----------------");InputStream in=System.in;byte[] b=new byte[512];int n=in.read(b);//将输入或读取的字节读到缓冲数组b中for(int i=0;i<n;i++){System.out.print((char)b[i]);}}}

二、运行结果:

1、从结果我们看出:输入所有字符可以只读一个,也可以读取一部分,也可以读全部

2、但是如果在两个字节流读入之间上一个关流的话,会出现后边的输入及读写无法进行!


0 0
原创粉丝点击