3 回答

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(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è)文件存在,本次寫入是仍會(huì)從文件開頭寫入(或者說清空原文件寫入);而追加模式下,如果你指定文件名的那個(gè)文件存在,本次寫入就會(huì)那個(gè)文件已有內(nèi)容的后面寫入(或者說從文件尾部寫入),這樣文件原有的內(nèi)容就不會(huì)被清空。
注意,指定寫入方式只是在你創(chuàng)建文件時(shí)(或者說是構(gòu)造?FileOutputStream?對(duì)象時(shí)),而向流中寫入內(nèi)容的方法都是?write(int),這個(gè)寫入方法沒有額外的參數(shù)。
所以,第一個(gè)圖片中 20?行的代碼是正確的。而最后一個(gè)圖片代碼中的關(guān)鍵區(qū)別是在第 17?行構(gòu)造文件輸出字節(jié)流對(duì)象時(shí)的第二個(gè)調(diào)用參數(shù)?true?上。

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

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