已采納回答 / 管理員
if(bytes = in.read(buf,0,buf.length))!=-1相當于if(in.read(buf,0,buf.length)!=-1){//但是卻不能這么寫????bytes =?in.read(buf,0,buf.length);}可以研究一下怎么看jdk源碼如果讀到了末尾會返回一個值“-1”,方法就是這么定義的。
2015-07-23
最新回答 / yangyang533
readpublic abstract int read() ? ? ? ? ? ? ? ? ?throws IOException從輸入流中讀取數據的下一個字節。返回 0 到 255 范圍內的 int 字節值。如果因為已經到達流末尾而沒有可用的字節,則返回值 -1。在輸入數據可用、檢測到流末尾或者拋出異常前,此方法一直阻塞。子類必須提供此方法的一個實現。返回:下一個數據字節;如果到達流的末尾,則返回 -1。拋出:IOException - 如果發生 I/O
錯誤。從API的理解來看,read是每次讀取...
2015-07-15
已采納回答 / 一碗陽春面
新建記事本,內容為空。另存為ANSI、unicode、utf-8,再去查看文件大小。你會發現ANSI的為0字節,unicode為2字節,utf-8的為3字節。所以個人猜測可能是記事本再另存為的時候會增加點隱藏內容來區分文件的編碼類型。java工程中建立的utf-8編碼文本文件如果重新另存為utf-8一下,也會變成9字節的。
2015-07-12
最贊回答 / 許曉濤
比如說,現在有一個水管,水流很慢,一滴一滴的流,然后你只能一滴一滴的喝。不過呢你有了一個杯子(BuffederInputStream)你可以讓杯子一滴一滴的接著。什么時候不需要水了,拿起來直接喝掉。這就是緩沖區
2015-07-07
已采納回答 / 墨雨憶詩
緩沖區的每次的復制文件的速度是會發生變化的,不是固定不變的(你自己可以試試),而且,批量緩存的速度太快了,而緩存速度又會或上或下的改變,因此,我們無法做出正確的判斷,所以,用批量緩存來判斷緩存區對文件的復制效率是不準確的
2015-06-15
已采納回答 / 源代碼_思無邪
在這個程序里,你的這個變量bytes=in.read(buf,0,buf.length),得到的是讀取的字節個數。用它去判斷是否小于等于15(bytes<=oxf)是沒有意義的。應該是在for循環內通過判斷if(buf[i]<=oxf)單個字節是否小于等于15才有意義。你說前面的可以,可能你用的是bytes=in.read();這是每次讀取一個字符,當然可以。請記清楚,int?bytes = in.read(buf,0,buf.length)和int?bytes=in.read()是完全不同的...
2015-05-17