学习字节流字节流的时候遇到这样的基础代码
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),执行结果如下:

事实证明,想法正确。
浙公网安备 33010602011771号