read()的返回值怎么會(huì)出現(xiàn)不一樣的結(jié)果呢?
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
這種不同的返回值是怎么出現(xiàn)的呢?源碼里面的判斷么?
2015-11-09
read() 返回的是 讀入緩存的總字節(jié)數(shù);如果因?yàn)橐训竭_(dá)流末尾而不再有數(shù)據(jù)可用,則返回 -1。
返回 100,說(shuō)明已經(jīng)讀取了100個(gè)字節(jié)數(shù)到緩存數(shù)組中;
返回-1,說(shuō)明已經(jīng)讀取到了流末尾,沒(méi)有數(shù)據(jù)可讀了。
上面代碼,第一次已經(jīng)一次性把流內(nèi)的字節(jié)讀完了,所以后面都是返回-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);//一次性讀完,說(shuō)明字節(jié)數(shù)組足夠大
// 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單獨(dú)提出來(lái)讓它賦值?in.read(buf, 0, buf.length),然后出現(xiàn)上面的額結(jié)果
2015-10-30
完整代碼來(lái)一發(fā)