read()的返回值怎么會出現不一樣的結果呢?
int bytes = 0;
bytes = in.read(buf, 0, buf.length);
System.out.println(bytes);
System.out.println(bytes = in.read(buf,0,10));
System.out.println(bytes = in.read(buf, 0, buf.length));
返回值分別是
100
-1
-1
這種不同的返回值是怎么出現的呢?源碼里面的判斷么?
2015-11-09
read() 返回的是 讀入緩存的總字節數;如果因為已到達流末尾而不再有數據可用,則返回 -1。
返回 100,說明已經讀取了100個字節數到緩存數組中;
返回-1,說明已經讀取到了流末尾,沒有數據可讀了。
上面代碼,第一次已經一次性把流內的字節讀完了,所以后面都是返回-1。
2015-11-01
其中一段是這樣的~
2015-11-01
public static void printHexBYByteArray(String fileName)throws IOException{
FileInputStream in = new FileInputStream(fileName);
byte [] buf = new byte[8*1024];
// int bytes = in.read(buf,0,buf.length);//一次性讀完,說明字節數組足夠大
// int j = 1;
// for(int i = 0;i<bytes;i++)
// {
// if(buf[i]<=0xf)
// {
// System.out.print("0");
//
// }
// System.out.print(Integer.toHexString(buf[i])+" ");
// if(j++%10 == 0)
// {
// System.out.println();
// }
int bytes = 0;
// bytes = in.read(buf, 0, buf.length);
// System.out.println(bytes);
// System.out.println(bytes = in.read(buf,0,10));
// System.out.println(bytes = in.read(buf, 0, buf.length));
//
int j = 0;
while((bytes = in.read(buf, 0, buf.length))!=-1){
for(int i = 0; i<bytes ; i++)
{
if(buf[i] <= 0xf)
{
System.out.print("0");
}
System.out.print(Integer.toHexString(buf[i] & 0xff)+" ");
if(j++%10 == 0)
{System.out.println();}}}
in.close();}
2015-10-30
完整的和老師演示的是一樣的,我就是把bytes單獨提出來讓它賦值?in.read(buf, 0, buf.length),然后出現上面的額結果
2015-10-30
完整代碼來一發