作者sorryChen (陳揚和)
看板Programming
標題Re: 用C++如何很快知道一個檔案有幾行
時間Mon Feb 23 09:41:05 2009
真是感謝版友的指導..
其實不太懂I/O的機制..如果很低階I/O 會每讀一個字母就讀一次嗎
還是會自動Buffer, 因為我之前的I/O太慢, 還自己寫了一個buffer的class
做batch read write, 但copy 到 buffer在一個個看'\n'會比 fgetc 然後檢查慢嗎
另外 有些OS有提供AP來判斷檔案大小, 比如說我們 ls就時可看到
那個不應該是去數出來而是os 記得的大小吧 但是換行就沒記 只有檔案大小有記
應該是這樣吧
※ 引述《sorryChen (陳揚和)》之銘言:
: 一定要讀過每個字元然後看有幾個\n嗎, 因為檔很大時還滿慢的
: call system call wc 應該就更慢了
: 要怎麼知道檔案有多大我也不確定 這個file system 應該有紀錄
: 不用一個個字元數.. 但有os independent的函數可回傳檔案大小嗎
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 128.125.87.33
推 sunneo:取得檔案位址h,移動到檔尾t,計算得到t-d 61.227.229.42 02/23 11:01
→ sunneo:這是取得檔案大小一般的做法 61.227.229.42 02/23 11:01
→ sunneo:是在檔案結構沒有損毀的情況 算是os記的吧 61.227.229.42 02/23 11:02
推 tinlans:低階 I/O 通常要自己指定 buffer 大小。 118.160.104.77 02/23 18:47
→ tinlans:一次只讀一個字元通常會很慢。 118.160.104.77 02/23 18:48