回 帖 发 新 帖 刷新版面

主题:[求助] 一个InputStream程序的问题。

import java.io.*;
public class Test {
    public static void main(String[] args) {
        FileInputStream in = null;
        try {
             in = new FileInputStream("c:\\Test.java");  // A
        } catch (FileNotFoundException e) {
            System.out.println("The File can't be found!");
            System.exit(-1);
        }
        int b;
        long num = 0;
        try {
            while((b = in.read())!= -1) {
                System.out.print((char)b);
                num ++;
            } 
          in.close();
          
        } catch (IOException e1) {
                System.out.println("Erro when loading the file....");
                System.exit(-1);
        }
        System.out.println();
        System.out.println("The size of this file is: " + num);
    }
}


C:/Test.java就是当前这个程序代码。为什么将A句改为
while((in.read())!= -1) {  
b = in.read(); 
运行时,就显示一堆乱七八糟的字母?而如果不改,就是会正常显示。

回复列表 (共5个回复)

沙发

不知道是不是

因为in.read()是一个变量
只要循环一次
in.read()就会改变


板凳


其实这个NEXT方法相当于一个指针的 在程序最开始的时候是指向最上头的地方。。在循环中他可以帮我们弄清楚到底要在哪里停止循环  这个就是NEXT的两个基本运用 你可以看下JDK 里面有更详细的解释方法

3 楼

while((in.read())!= -1) {  
b = in.read();

因为in.read()方法是从流中读取下一个字节, 你这样写的话其实是读了两个字节了,而才输出一次


4 楼

哦,明白啦。谢谢。我多读了一次。

5 楼

同意3楼的
while((in.read())!= -1) {  //读了1个字节
b = in.read();          //再读下1个字节

我来回复

您尚未登录,请登录后再回复。点此登录或注册