我试图阅读一个大文本文件,大约10千兆字节。 我想找到最后一个字符串。
例如下面是5行的样本,第2行和第5行是相同的字符串 我想取最后一个,因为它是最新的,并使用streamreader输出到文本文件。
我最好使用正则表达式,还是最好使用lastindexof
来确定它是否是最后一个字符串?
我有很多这样的搜索要做,所以我会创建某种类型的数组并让它从下往上搜索以提高性能。
有人能指出我正确的方向吗?
GET/a/users/115656WindowsNT6.1;Trident
GET/a/users/126692MSIE7.0;WindowsNT6.1
GET/a/users/77562WindowsNT6.1;WOW64;Tr
GET/a/users/35650WindowsNT6.1;WOW64;Tr
GET/a/users/126692MSIE7.0;WindowsNT6.2
答案 0 :(得分:0)
我认为File.ReadLines
是根据msdn阅读大文件的最佳方式之一:
ReadLines和ReadAllLines方法的不同之处如下:使用时 ReadLines,您可以先开始枚举字符串集合 整个系列归还;当你使用ReadAllLines时,你必须 在您可以访问之前等待返回整个字符串数组 数组。因此,当您处理非常大的文件时, ReadLines可以更有效率。
因此,根据这一点,我编写了以下代码,希望它有所帮助:
Dim myList As List(Of String) = IO.File.ReadLines("MyLargFile.txt").OfType(Of String)().Where(Function(s) s.Contains("126692MSIE7")).ToList
这段代码将返回一个匹配字符串行列表。
输出
myList(0) = "GET/a/users/126692MSIE7.0;WindowsNT6.1"
myList(1) = "GET/a/users/126692MSIE7.0;WindowsNT6.2"
当然,如果需要最后一行,您可以使用Last
方法:
Dim last As String = myList.Last