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

时间:2012-07-23 06:47:18

标签: c# .net string io stream

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

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

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

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分隔)。

3 个答案:

答案 0 :(得分:1)

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

请参阅here

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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