作者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
1F:推 aluuser:谢谢 08/27 17:32
2F:推 horngsh:好文 08/28 11:45
3F:→ hpo14:推,但这个也是再长度固定的时候可以用...@@ 08/28 14:08
4F:推 cplusplus:上一篇推文有提到用seek到最後再往前找~ 08/28 17:18
5F:推 icant:可以先用方法二 读进最後15k的资料 (假设已知每行不超过15k) 08/30 00:03
6F:→ icant:再用方法一 读到正确资料 这样可以不受固定长度限制 08/30 00:04
7F:→ icant:同时不增加档案增大的存取成本 08/30 00:05