问答详情
源自:4-2 字节流之文件输入流FileInputStream-2

我用printByByteArray方法,字节数组不足够大怎么也是读取整个文件?

 public static void printByByteArray(String fileName)throws IOException{
  FileInputStream in=new FileInputStream(fileName);
  byte[] buf=new byte[10];
//  int b=in.read(buf, 0, buf.length);
//  int i=1;
//  for(int j=0;j<b;j++){
//   if(buf[j]<=0xf){
//    System.out.print("0");
//   }
//   System.out.print(Integer.toHexString(buf[j])+"  ");
//   if(i++%10==0){
//    System.out.println();
//   }
//  }
//  in.close();
  int b=0;
  int i=1;
  while((b=in.read(buf, 0, buf.length))!=-1){
   for(int j=0;j<b;j++){
    if((buf[j] & 0xff)<=0xf){
     System.out.print("0");
    }
    System.out.print(Integer.toHexString(buf[j] & 0xff)+"  ");
    if(i++%10==0){
     System.out.println();
    }
   }
  }
  in.close();
 }

提问者:慕妹6361977 2017-04-16 17:35

个回答

  • 海风3
    2017-04-16 20:36:51
    已采纳

    一直循环着读,比如你写的byte为10,while循环读取输出一次,返回不是-1再次进入循环,知道in.read(buf, 0, buf.length)这个方法读到文件最后,这个方法返回-1,循环结束。

    这种模式不是一直读最后输出,而是读一点,然后输出,在读一点