为什么在int b哪里直接声明int b=in.read()后输出的数据未能进行进制转化?会连续出现 49 49 49 49不停止,而老师先声明b然后在while循环里赋上in.read()输出的字节码却没问题呢?

来源:4-1 字节流之文件输入流FileInputStream-1

福工刘德华

2017-11-26 16:22

我所敲的不能进行转化,连续输出49……的代码:

FileInputStream in = new FileInputStream(fileName);

int b=in.read();

int i = 0;

while (b  != -1) {

System.out.print(Integer.toHexString(b) + " ");

while (i++ % 10 == 0)

System.out.println();

}

in.close();

老师敲的没问题的代码:

FileInputStream in = new FileInputStream(fileName);

int b;

int i = 0;

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

System.out.print(Integer.toHexString(b) + " ");

while (i++ % 10 == 0)

System.out.println();

}

in.close();


写回答 关注

1回答

  • Derrickers
    2017-11-26 22:44:03
    已采纳

    因为你这个代码只在声明的时候读取了一次,老师的放在while循环里每次进行循环都会读取一次。

文件传输基础——Java IO流

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

133755 学习 · 1030 问题

查看课程

相似问题