问答详情
源自:4-3 字节流之文件输出流FileOutputStream

以下代码读取了文件后,整个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();

}

}


}


提问者:假面舞者1874 2016-04-04 15:47

个回答

  • 别路Biello
    2016-04-05 16:35:47
    已采纳

    你好,你的 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();
    	}


  • 慕粉3170877
    2016-07-12 10:55:57

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

  • yL_human
    2016-04-05 16:34:46

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