学习字节流字节流的时候遇到这样的基础代码

public static void main(String[] args) throws Exception{
        InputStreamReader inputStreamReader=new InputStreamReader(new FileInputStream(".\\src\\hello.txt"));
        char[] b=new char[1024];
        int len;
        while ((len=inputStreamReader.read(b))!=-1){   
     System.out.println(new String(b,0,len)); 
   }   
    inputStreamReader.close(); 
}

一开始对 int len;非常的不解,既然是字符流吗,为什么要用一个int 型的变量来接收?

思路如下:

   创建一个容量为1024的字符数组,以一组字符数组去接收所 read 到的内容,inputStreamReader.read(b)将文件内容读取到了该字符数组里面(如果内容超过了1024,就只能等下一次循环再读取),inputStreamReader.read(b)返回读到的数组长度赋值给len,此时len大于1,while判定为true即执行循环体,第一轮将其中的内容输出完,进入第二轮,如果后面文件读完了,inputStreamReader.read(b)会读到末尾即是-1,跳出循环。

 

代码如下:

        int i=1;
        InputStreamReader inputStreamReader=new InputStreamReader(new FileInputStream(".\\src\\hello.txt"));
        char[] b=new char[1024];
        int len;

        while ((len=inputStreamReader.read(b))!=-1){       //一次读取一个字符数组
            System.out.println("\n第"+i+"次读取");
            System.out.println(new String(b,0,len));
            i++;
        }

        inputStreamReader.close();
    }

 

这里我先定义了一个全局变量i 用来查看循环体执行多少次(hello.txt内容超过了1024),执行结果如下:

 

 事实证明,想法正确。

posted on 2021-12-25 16:29  之火  阅读(312)  评论(0)    收藏  举报