如何从特定位置读取一行字符串



我正在处理一个非常大的文件。我说的是千兆字节。

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

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

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 

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

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

请参见此处。

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

在读取StreamReader.ReadLine()时使用lineCounter变量并将其递增。当你达到一个特定的索引(即lineCounter==SpecificIndex)时,停止阅读。

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

相关内容

  • 没有找到相关文章

最新更新