Re: [問題] 寫入檔案,有辦法寫入某行後方接續寫入?

看板java作者 (殺人貓™)時間10年前 (2014/05/23 20:14), 編輯推噓1(106)
留言7則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《whitebase (finn)》之銘言: : 各位大大好, : 想請問一下關於寫檔, : 是可以在不覆蓋的情況下接續往下寫入, : 但有辦法辦到整個檔案以寫入完備畢後, : 接續的往某一行的後方寫嗎? : 範例如下: : 123 : 456 : 789 : 原檔案長這樣, : 有辦法改成: : 123 : 456ABC : 789 : 這個樣子嗎?可接在某一行之後,而不是只接在最後一行之後 這個我有點懷疑你有一個典型的觀念錯誤 事實上這檔案並不是長個如你所想的這樣 而是長得比較像這樣123@456@789 他其實是一個plain的, linear的結構 並沒有「行」這種概念 "@"這個東西在linux, unix跟windows各用不同的兩個位元表示 Windows底下是\r\n Linux底下是\n而BSD系卻是\r 不過不管他是什麼,事實上「行」的概念是不存在的 所以「接在某行後面的操作」其實真正的意思是 「找出第幾個@,然後把一串字元放在他前面」 這顯然並不是普通檔案API會幫你做的事情 不過既然有邏輯,代表他實際上也做的到 這也是一個相當有名的棘手問題,因為在跨平台的時候每個平台"@"都不太一樣 這可以當作java練習題來試試看 噢對,差點忘了,unicode也是可以來參戰的 :D 不過java應該交給系統處理就可以了... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.169.167.26 ※ 文章網址: http://www.ptt.cc/bbs/java/M.1400847290.A.3D8.html

05/24 02:05, , 1F
恩我大概知道那個邏輯是錯誤的,但那樣簡單的表達比較容
05/24 02:05, 1F

05/24 02:08, , 2F
易表達我要做的,打一長串人家反而很難知道我要幹嘛
05/24 02:08, 2F

05/24 02:12, , 3F
所以同學,你有方法可以抓傳說中的某個@嗎,僅考慮java
05/24 02:12, 3F

05/24 05:04, , 4F
String.split()分行以後丟到StringBuffer重組
05/24 05:04, 4F

05/24 05:08, , 5F
spilt要拿什麼當分隔字元要看文件來源
05/24 05:08, 5F

05/24 05:10, , 6F
spilt完以後的String[]理論上就是你要的「行」
05/24 05:10, 6F

05/24 06:14, , 7F
附帶一提 可以挑戰在streaming下做這件事情喔 :D
05/24 06:14, 7F
文章代碼(AID): #1JVpkwFO (java)
文章代碼(AID): #1JVpkwFO (java)