[問題] 如何有效率的修改大檔案

看板C_and_CPP作者 (嘎嘎嘎嘎嘎)時間12年前 (2013/05/06 01:54), 編輯推噓1(1010)
留言11則, 7人參與, 最新討論串1/1
我在想 C / C++ 要怎麼有效率的修改大檔案的一小部份 例如我想要 把一個 1G ~ 10G 的文字檔 在第五行插入一行我要的文字 我的想法是 1. 開檔 2. 所有文字讀入 buffer 3. 把 buffer 中的前四行 覆寫到檔案裡 把要插入的一行文 寫到檔案裡 把 buffer 中第四行之後的文字 寫到檔案裡 4. 關檔 只是修改一小部份 卻要把整個檔案 read & write 一遍 有沒有比這個更有效率或是好的方法? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.60.254.53

05/06 02:08, , 1F
那就不要讀, 寫一個描述檔就好
05/06 02:08, 1F

05/06 02:34, , 2F
版主有點聰明!! 正所謂山不轉路轉 XD
05/06 02:34, 2F
假設這是一個大檔蛋存在硬碟裡的示意圖 A B C D E F G H ... Z //原本大檔案的內容 A B C + + E F G H ... Z //當我修改他的一小部份 紅色部分是現在我的程式會更動的地方 既然會被更動 當然必須 read & write 但是我希望可以像這樣 A B C D E F G H ... Z A B C + + E F G H ... Z 或是這樣更好 A B C D E F G H ... Z A B C E F G H ... Z ↓ ↑ + + 我猜一個檔案存在硬碟理 是可以斷掉不連續的 (至少我的 windows XP 是這樣) 但是要如何控制哪裡斷掉 感覺程式會寫到很底層 這會很難做到嗎 如果很難我就只能像板主說的那樣 寫在另一個檔案了 ※ 編輯: xxxx9659 來自: 61.60.254.53 (05/06 02:58)

05/06 03:01, , 3F
有沒有聽過隨機檔 沒聽過去查一查
05/06 03:01, 3F

05/06 03:02, , 4F
檔案要怎麼存fs會處理 你老實用語言提供的lib就好
05/06 03:02, 4F

05/06 03:03, , 5F
他底下切成一千個fragment也不干你事
05/06 03:03, 5F

05/06 10:44, , 6F
底層FS只要錯一個的地方 檔案可能就掰掰了
05/06 10:44, 6F

05/06 14:09, , 7F
file system 是 kernel 在處理的
05/06 14:09, 7F

05/06 15:01, , 8F
file system 還真不一定是在 kernel...有 FUSE 這東西
05/06 15:01, 8F

05/06 15:22, , 9F
filesystem 可以外掛在linux上,不一定在kernel
05/06 15:22, 9F

05/06 16:45, , 10F
總之像以前PCTOOLS那種蠻幹法已經是過眼雲煙了。
05/06 16:45, 10F

05/07 14:42, , 11F
懂了!動到底層 file system 的程式,不能那麼隨心所欲
05/07 14:42, 11F
文章代碼(AID): #1HXfovrG (C_and_CPP)