-1

有时,我需要查看大约 25 MB 的 Oracle Datapump SQLFILE(纯文本)以查找一些关键的文本字符串。我目前在 UltraEdit 中使用了一些方便的功能,这使得这不是那么糟糕。但是,我有一些其他用户没有 UltraEdit 并且不熟悉 Reg 表达式来查找正确的值。

如果我想创建两个集合并只添加与某个 RegEx 匹配的行,我应该从哪里开始?我应该使用普通的 StreamReader 和 StreamReader.ReadLine() 来浏览文件吗?或者文件的大小会建议不同的选择吗?

最终结果是将集合的内容输出到屏幕或新的文本文件,但我还不太担心这个细节。

请尽可能笼统或具体,我不能免于填写我可以为自己填写的详细信息。

4

2 回答 2

2

从 .NET Framework 4 开始,您可以使用File.ReadLines返回 an 的方法,IEnumerable<string>因此不会将整个文件保存在内存中。

var lines = File.ReadLines(path).Where(s => myRegex.IsMatch(s));
于 2012-12-03T16:44:23.493 回答
0

我应该使用普通的 StreamReader 和 StreamReader.ReadLine() 来浏览文件吗?或者文件的大小会建议不同的选择吗?

这就是我会采取的方法。使用流不会将整个文件加载到内存中,因此对于大文件来说似乎是完美的。

对于每一行,您可以测试它是否匹配并将该行复制到相应的列表中。或者,如果您担心数据过多,请将每一行复制到两个输出文件之一(也使用流)。

于 2012-12-03T16:35:40.993 回答