已采納回答 / 深天
Stirng file =“demo/obj.dat" 這里僅僅是創建了一個字符串,并沒有當做文件用。還有File file="demo/obj.dat";這種創建文件對象的方法是完全錯誤的,正確寫法是這樣的:File file=new File("demo/obj.dat");回到剛才"為什么后來可以當做一個文件用":同上一句話可以改寫成File file01 =new File(file);? //這里的的file引用上面的字符串即我們做的只是對字符串的引用,然后創建了一個文件對象,并沒有說我們把它當...
2016-10-11
已采納回答 / huangsai
這個方法的作用是把緩沖區的數據輸出。一般在讀寫流的時候,數據是先被讀到了內存中,再把數據寫到文件中,當數據讀完的時候不代表數據已經寫完了,因為還有一部分有可能會留在內存這個緩沖區中。這時候如果調用了close()方法關閉了讀寫流,那么這部分數據就會丟失,所以應該在關閉讀寫流之前先flush()。
2016-10-11
已采納回答 / niupizhi203522025
實際上并非是每次都產生異常,而是由于字符編碼格式、文件是否存在等經常會發生異常,所以涉及到IO流或文件操作時,都要防止出現這樣的異常,所以都要進行try/catch或拋除
2016-10-10
已采納回答 / 慕函數7182242
bytes用來記錄讀入了多少個字節(in.read()的返回類型就是int,值為讀的字節個數)in.read(buf,0,buf.length)用來讀入,一次最多可以讀buf.length個字節,但是并不是每次都讀入了這么多個字節,(可能讀的文件沒這么長),所以是用bytes來控制循環結束的條件
2016-10-10
已采納回答 / 遠方的云o
這兩個的差別,實際上是read()方法兩種重載方式的差別。in.read()表示單字節讀取,相當于一滴一滴水(字節)地去灑in.read(byte[] buf ,int start ,int size )表示字節先讀取到buf緩沖區,start表示緩沖區的起始位置,size表示存入緩沖區的大小。這種方式相當于先把一滴一滴水(字節)放到一個桶(buf)里,當然這個桶肯定有大?。╯ize),當桶里的水達到一定程度(緩沖區的極限)時,再將整個桶里的水灑出去。授人以魚不如授人以漁詳細課程可以去看看 慕課網Java...
2016-10-03
已采納回答 / Jenichan
這么跟你說吧,GBK的編碼中文和符號是雙字節,字符和整型是單字節。utf-8的中文和符號是三字節,字符和整型是單字節。所以整體來說是不兼容的,但如果你的文本存的都是字符和數值,這樣子是不會出現亂碼的。
2016-09-26
已采納回答 / QuaciXie
<...code...>read函數返回的是緩沖數組中實際上讀入的字節數,無論是read(byte[] b) 還是 read(byte[] b,int off,int length)。對于read(byte[] b),它默認執行read(byte[] b,0,b.length)。所以應該可以用read(byte[] b)代替的 。解釋如下:<...圖片...>如果說在讀到最后一組的時候,緩沖數組沒有滿,len值很有用。
2016-09-17
已采納回答 / XhstormR
因為 你是 Bar2 bar2 = new Bar2(); ? bar2 = (Bar2)ois.readObject();但是老師寫的是 ? Bar2 bar2 = (Bar2)ois.readObject(); ?這里要注意的是 老師并沒有去new一個Bar2對象而你卻是先new出來的 肯定會調用父類的構造函數。
2016-09-14
已采納回答 / 六月熊
UTF-8中,前面兩個字符表示數據占用的字節數。eg: ?dos.writeUTF("中國中國"),運行結果前面兩位就會為00 0c。即"中國中國"占用12個字節。還望采納!
2016-09-11
已采納回答 / 側耳聽
while ((b=fin.read())!=-1)判斷的是fin.read()是否讀到最后,而且每次判斷都會重新給b賦值,這里主要是read()會一個一個往下讀取。int b =fin.read();while(b!=-1)這里只給int b賦值一次,這里只判斷b里面的值,如果b不等于-1不就一直打印一個嘛。
2016-09-08