3 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
你前面回復(fù)中的理解的前半部分基本上是對(duì)的。
但不是在第 18 行的 write 方法中加入額外的參數(shù),而是在構(gòu)造 FileOutputStream 對(duì)象時(shí)加入一個(gè) boolean 值參數(shù),比如:
new FileOutputStream("文件名", true);
這里第二個(gè)參數(shù)的意義是“是否以追加模式創(chuàng)建文件”。
FileOutputStream 文件輸出字節(jié)流的這兩個(gè)構(gòu)造方法對(duì)應(yīng)不同的創(chuàng)建文件模式:
(String) 參數(shù)的方法表示以普通方式創(chuàng)建文件;(String, boolean) 參數(shù)的方法,如果第二個(gè)參數(shù)為 true 表示以追加模式創(chuàng)建文件。
普通模式下,如果你指定文件名的那個(gè)文件存在,本次寫(xiě)入是仍會(huì)從文件開(kāi)頭寫(xiě)入(或者說(shuō)清空原文件寫(xiě)入);而追加模式下,如果你指定文件名的那個(gè)文件存在,本次寫(xiě)入就會(huì)那個(gè)文件已有內(nèi)容的后面寫(xiě)入(或者說(shuō)從文件尾部寫(xiě)入),這樣文件原有的內(nèi)容就不會(huì)被清空。
注意,指定寫(xiě)入方式只是在你創(chuàng)建文件時(shí)(或者說(shuō)是構(gòu)造 FileOutputStream 對(duì)象時(shí)),而向流中寫(xiě)入內(nèi)容的方法都是 write(int),這個(gè)寫(xiě)入方法沒(méi)有額外的參數(shù)。
所以,第一個(gè)圖片中 20 行的代碼是正確的。而最后一個(gè)圖片代碼中的關(guān)鍵區(qū)別是在第 17 行構(gòu)造文件輸出字節(jié)流對(duì)象時(shí)的第二個(gè)調(diào)用參數(shù) true 上。

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊
構(gòu)造方法中append==true, 只會(huì)在初始化時(shí)設(shè)置寫(xiě)入指針的當(dāng)前位置。

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超5個(gè)贊
我懂了,第一張圖片里因?yàn)槭莿?chuàng)建了輸出對(duì)象后,一次次地往里面寫(xiě)入東西,所以,寫(xiě)入的東西就按照順序一個(gè)個(gè)都被存進(jìn)去了,
然后第二章圖片里面,是因?yàn)樵瓉?lái)就存在這樣的文件,之后以這個(gè)文件創(chuàng)建輸出對(duì)象的時(shí)候,把這個(gè)文件原來(lái)里面的東西都清空了。如果我在第18行代碼后面再加上什么內(nèi)容,之前寫(xiě)入的100也是不會(huì)被刪掉的,是這樣吧?
添加回答
舉報(bào)