图象文件数据读入到数组当中的问题?
我想把image.jpg文件(大小为78419个字节)的内容读入到一个数组当中:
/**
/* fis 是由文件image.jpg创建的文件输入流对象
/* fsize 是文件image.jpg的大小,为78419
/* progress 是用来表示读入文件进度的一个数值
/**
byte[] read(FileInputStream fis, int fsize, int progress) {
int np = 0; // 文件指针
int n = 0; // 每次读入的字节数目
int bufSize = fsize / 5; // 中间缓冲区的大小(这里是15683)
byte[] buf = new byte[fsize]; // 文件缓冲区
try {
while ((n = fis.read(buf, bp, bufSize)) != -1) {
bp += n;
progress = bp / fsize * 100;
}
} catch (Exception e) {
return null;
}
return buf;
}
按理说应该可以全部读入image.jpg文件的数据。但是我发现函数的返回值是null,或者说数据没有全部读入。
我就把每一次读入的数据记录下来:
(1) 读入15683个字节,np = 15683
(2) 读入15683个字节,np = 15683 + 15683 = 31366
(3) 读入15683个字节,np = 31366 + 15683 = 47049
(4) 读入15683个字节,np = 47049 + 15683 = 62732
(5) 读入15683个字节,np = 62732 + 15683 = 78415
(6) 按理说还应该读入剩下的4个字节,但是没有。
为什么?
谢谢!