2010-01-08 102 views
0

我正在尝试为我们的消息传递(WCF)组件构建一个小工具。这个想法是基于先前的跟踪日志给出响应以进行测试。由于SOAP消息非常大,我们倾向于拥有巨大的跟踪文件。我想要做的就是从最后一行开始逐行读取(从最新到最旧),以便构建我的回应。任何人都有任何想法我怎么能在.NET中做到这一点?看来FileStream类只支持正向读取。从头开始读取文件

+0

另请参见:[获取超大文本文件的最后10行> 10GB c#](http://stackoverflow.com/questions/398378 ),[如何用C#中的迭代器反向读取文本文件](http://stackoverflow.com/questions/452902) – hippietrail 2012-11-05 19:14:09

回答

2

如果这些文本文件,我有ReverseLineReader(或一些这样的)在MiscUtil,你可能会发现有用的。它只支持某些编码(Unicode,UTF-8或任何固定的单字节编码),但希望这对你来说已经足够了。

它通过一个迭代器返回字符串,所以你可以使用LINQ来限制你读多少等,并且它们被懒惰地读取。

我假设你实际上并不想读整个文件?如果你这样做,我会建议使用File.ReadAllLines,然后扭转由此产生的阵列:)

+0

谢谢。我会看看它。但是,这个想法是获得关于如何实现它自己的指导,而不是已经完成的解决方案的链接:)。 (用于学习目的) – 2010-01-08 13:33:20

+0

是的,我不想读取内存中的整个文件。涉及的跟踪日志相当大 – 2010-01-08 13:34:57

+0

@AZ:这非常棘手,因为你基本上必须读取一个缓冲区并向后查找换行符,并将各种事情考虑在内。我建议你尝试从现有的代码中学习:) – 2010-01-08 14:52:51