作者MRjk (efeewgf)
看板C_Sharp
標題Re: [問題] 讀取檔案
時間Wed Aug 27 16:52:31 2008
這功能沒有直接的函式可以用
不過自己兜的這有好幾種作法 主要是考慮效率和檔案大小的問題
最簡單的方法就是全部讀進來
用while()..... Readline() 這樣讀到的最後一行就是新的那行
不過如果今天你的檔案很大 那這個方法可能會很沒有效率
所以如果你所寫入的資料每行是都有固定長度的 例如每行一定都是15byte
那就從檔案結尾處往前數15byte開始讀
這樣即使檔案很小或很大 你的讀取時間也能近乎相同
另外如果你的資料讀寫量很大很頻繁
你還要考慮的是有沒有可能正在寫入資料可是還沒寫滿一行就被讀取的可能性
以第一個方法而言就是多加一個判斷式判斷 這行還不完整就拿上一行的先用
應該不會很困難
※ 引述《aluuser (我的天空)》之銘言:
: 使用System.IO想做讀取檔案的動作 這個檔案會有新資料一直寫入並不覆蓋
: 一次寫一行
: 我想抓最新一筆的寫入資料(也就是最後一行)
: 這該怎麼做呢?
: 因為使用ReadLine()只會讀第一行資料 但我想做的是讀最新(最後一行)的資料
: 謝謝
: ※ 編輯: aluuser 來自: 140.135.8.215 (08/27 15:32)
--
宅之力
http://blog.wahahajk.com
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.171.248.88
推 aluuser:謝謝 08/27 17:32
推 horngsh:好文 08/28 11:45
→ hpo14:推,但這個也是再長度固定的時候可以用...@@ 08/28 14:08
推 cplusplus:上一篇推文有提到用seek到最後再往前找~ 08/28 17:18
推 icant:可以先用方法二 讀進最後15k的資料 (假設已知每行不超過15k) 08/30 00:03
→ icant:再用方法一 讀到正確資料 這樣可以不受固定長度限制 08/30 00:04
→ icant:同時不增加檔案增大的存取成本 08/30 00:05