0

我正在处理一个非常大的文件。我说的是技嘉大。

我需要能够从特定索引中读取一行,因为文本文件一直在更新。实现这一目标的最快解决方案是什么?我完全不受空间要求的限制。

编辑:发布了更详细的信息。假设我有以下需要阅读的文本:

Jun 21 09:47:53 ez-x5 user.debug if_comm: [TX] 30 40 05 
Jun 21 09:47:53 ez-x5 user.debug if_comm: [RX] 04 
Jun 21 09:47:53 ez-x5 user.debug if_comm: [TX] 30 40 05 
Jun 21 09:47:54 ez-x5 user.debug if_comm: [RX] 02 30 40 0f 30 32 31 23 64 31 30 32 30 64 64 49 49 49 49 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 03 0b 

这个文本文件由我们的记录器持续更新。当文本文件被更新时,我需要读取附加到日志中的任何内容的新行(由 \n 分隔)。

4

3 回答 3

1

使用 FileStream 对象,您可以通过更改 Position 属性来随机访问文件。

这里

设置位置时,它会寻找流中的位置,因此您需要提前知道要从文件中的哪个位置开始查找。

于 2012-07-23T06:57:31.907 回答
0

通过使用,MemoryMappedFile您可以将文件的一部分映射到您的内存中(这样您就不会读取完整的文件)。通过将其与 a 相结合,FileSystemWatcher您应该能够获得一个非常好的解决方案来工作。

于 2012-07-23T07:02:59.237 回答
0

使用lineCountervariale 并在阅读时增加它StreamReader.ReadLine()。当您达到特定索引(即。lineCounter==SpecificIndex)时,请停止阅读。

于 2012-07-23T06:51:46.890 回答