我需要处理一个大文件,大约400K行和200M.但有时我必须自下而上处理.我怎样才能在这里使用迭代器(yield return)?基本上我不喜欢在内存中加载所有内容.我知道在.NET中使用迭代器更有效.
显示非常大的文本文件的最后10行的最有效方法是什么(此特定文件超过10GB).我只想写一个简单的C#应用程序,但我不确定如何有效地做到这一点.
我正在尝试阅读一些文本文件,其中每行都需要处理.目前我只使用StreamReader,然后单独读取每一行.
我想知道是否有更有效的方法(在LoC和可读性方面)使用LINQ来做到这一点而不影响运营效率.我看到的例子涉及将整个文件加载到内存中,然后处理它.在这种情况下,我不相信这会非常有效.在第一个示例中,文件可以达到大约50k,而在第二个示例中,不需要读取文件的所有行(大小通常小于10k).
您可能会争辩说,现在这对于这些小文件并不重要,但我相信这种方法会导致代码效率低下.
第一个例子:
// Open file
using(var file = System.IO.File.OpenText(_LstFilename))
{
// Read file
while (!file.EndOfStream)
{
String line = file.ReadLine();
// Ignore empty lines
if (line.Length > 0)
{
// Create addon
T addon = new T();
addon.Load(line, _BaseDir);
// Add to collection
collection.Add(addon);
}
}
}
Run Code Online (Sandbox Code Playgroud)
第二个例子:
// Open file
using (var file = System.IO.File.OpenText(datFile))
{
// Compile regexs
Regex nameRegex = new Regex("IDENTIFY (.*)");
while (!file.EndOfStream)
{
String line = file.ReadLine();
// Check name
Match m …Run Code Online (Sandbox Code Playgroud) 在本机C#中,如何从文件末尾读取?
这是相关的,因为我需要读取一个日志文件,读取10k,读取最后3行是没有意义的.
如果有一个csv文件,其数据会不时增加.现在我需要做的是阅读最后30,000行.
代码:
string[] lines = File.ReadAllLines(Filename).Where(r => r.ToString() != "").ToArray();
int count = lines.Count();
int loopCount = count > 30000 ? count - 30000 : 0;
for (int i = loopCount; i < lines.Count(); i++)
{
string[] columns = lines[i].Split(',');
orderList.Add(columns[2]);
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,但问题是
File.ReadAllLines(Filename)
Run Code Online (Sandbox Code Playgroud)
阅读导致性能不足的完整文件.我想要它只读取最后30,000行迭代整个文件.
PS:我正在使用.Net 3.5..Net 3.5中不存在Files.ReadLines()
我是C#新手,正在开发一个应用程序,该应用程序显示文本文件最后两行两个日期的时间差。
我想从文件文本中读取最后一行,我已经知道如何读取最后一行,但我需要读取最后一行。
这是我的代码:
var lastLine = File.ReadAllLines("C:\\test.log").Last();
richTextBox1.Text = lastLine.ToString();
Run Code Online (Sandbox Code Playgroud)