※ 引述《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應該交給系統處理就可以了...