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