为了账号安全,请及时绑定邮箱和手机立即绑定

以下代码读取了文件后,整个console里输出的都是68,但这个文件里只有5个字节(hello),求大神解答是何原因?


package com.imooc;



import java.io.FileInputStream;

import java.io.IOException;

public class IOUtil {

/*

*/

public static void printHex(String fileName)throws IOException{

FileInputStream in=new FileInputStream(fileName);

int b=in.read();

int i=1;

while(b!=-1){

if(b<=0xf){

System.out.println();

}

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

if(i++%10==0){

System.out.println();

}

}

in.close();

}

public class Text {


public static void main(String[] args) {

// TODO Auto-generated method stub

       try {

IOUtil.printHex("C:\\Users\\dell\\Desktop\\io.txt");

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


}


正在回答

3 回答

你好,你的 printHex()函数写的有问题,你一开始只读了一个字节,while循环中b一直是68,不会等于-1,所以一直输出68,在while循环最后加一句b=in.read();就可以了

public static void printHex(String fileName)throws IOException{
		FileInputStream in=new FileInputStream(fileName);
		int b=in.read();
		int i=1;
		while(b!=-1){
			if(b<=0xf){
				System.out.println();
			}
			System.out.print(Integer.toHexString(b)+"  ");
			if(i++%10==0){
				System.out.println();
			}
			b=in.read();
		}
		in.close();
	}


1 回复 有任何疑惑可以回复我~
#1

假面舞者1874 提问者

非常感谢!
2016-04-06 回复 有任何疑惑可以回复我~

while((b=in.read())!=-1)的意思是循环读取一个字节,直到所读取的字节数为-1时,就会结束读取操作!

0 回复 有任何疑惑可以回复我~

while条件写错了。。b=in.read()-1  

0 回复 有任何疑惑可以回复我~
#1

yL_human

b= in.read()!=-1 上面写错了
2016-04-05 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

以下代码读取了文件后,整个console里输出的都是68,但这个文件里只有5个字节(hello),求大神解答是何原因?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信