Re: [問題] 從檔案開頭寫入資料
※ 引述《icetofux (豆腐)》之銘言:
: 請問一下,如果我想寫入同一個檔案2次,且第二次的內容要在第一次前面,
: 比方說:
: 第一次寫入"ABC"並關閉檔案。
: 第二次寫入"DEF"並關閉檔案。
: 開啟檔案後我希望內容是"DEFABC"。
: 我使用ofstream(檔案名稱,開啟模式)作為開啟檔案的方式,並且已知有6種開啟模式:
: ios::app :附加於檔案的尾端。
: ios::ate :指向檔案尾端。
: ios::binary :以二進制模式開啟。
: ios::in :輸入檔案。
: ios::out :輸出檔案。
: ios::trunc :如果檔案內容存在就刪除。
: 第一次開檔我選擇以ios::trunc開啟,並且已經確保它能符合我的需求。
: 第二次開檔我就不太清楚要選什麼了?
: 目前已知可以先將不符合需求的ios::in、ios::trunc、ios::binary三種先剔除。
: 接著我嘗試過:
: ios::app ->依然從檔案尾端附加。
: ios::app + seekp(0,ios::beg) ->依然從檔案尾端附加。
: ios::out ->會將第一次寫入的內容刪除。
: ios::out + seekp(0,ios::beg) ->會將第一次寫入的內容刪除。
: ios::ate ->會將第一次寫入的內容刪除。
: ios::ate + seekp(0,ios::beg) ->會將第一次寫入的內容刪除。
: 都不符合我的需求,請問是不是有方法能達到這樣的需求呢?
我的作法如下:
1.先把原本檔案的內容讀到buffer裡
2.將要寫入的內容先寫入一個暫存檔案
3.再把buffer裡的資料寫入這個暫存檔案
4.刪除原本的檔案
5.把這個暫存檔案改名為原本的檔案名稱
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.62.64.95
推
08/11 13:01, , 1F
08/11 13:01, 1F
→
08/11 13:04, , 2F
08/11 13:04, 2F
推
08/11 13:36, , 3F
08/11 13:36, 3F
→
08/11 13:41, , 4F
08/11 13:41, 4F
→
08/11 13:41, , 5F
08/11 13:41, 5F
推
08/11 13:52, , 6F
08/11 13:52, 6F
推
08/11 22:51, , 7F
08/11 22:51, 7F
→
08/12 09:41, , 8F
08/12 09:41, 8F
討論串 (同標題文章)