相关疑难解决方法(0)

如何在C#中使用迭代器反向读取文本文件

我需要处理一个大文件,大约400K行和200M.但有时我必须自下而上处理.我怎样才能在这里使用迭代器(yield return)?基本上我不喜欢在内存中加载所有内容.我知道在.NET中使用迭代器更有效.

.net c#

84
推荐指数
3
解决办法
5万
查看次数

获取最后10行非常大的文本文件> 10GB

显示非常大的文本文件的最后10行的最有效方法是什么(此特定文件超过10GB).我只想写一个简单的C#应用​​程序,但我不确定如何有效地做到这一点.

c# text large-files

64
推荐指数
6
解决办法
5万
查看次数

在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# linq line

56
推荐指数
2
解决办法
6万
查看次数

从末尾开始读取文件,类似于尾部

在本机C#中,如何从文件末尾读取?

这是相关的,因为我需要读取一个日志文件,读取10k,读取最后3行是没有意义的.

c# file-io

35
推荐指数
3
解决办法
3万
查看次数

读取文件的最后30,000行

如果有一个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# csv file-io

5
推荐指数
1
解决办法
1337
查看次数

读取文本的最后 2 行

新手,正在开发一个应用程序,该应用程序显示文本文件最后两行两个日期的时间差。

我想从文件文本中读取最后一行,我已经知道如何读取最后一行,但我需要读取最后一行。

这是我的代码:

var lastLine = File.ReadAllLines("C:\\test.log").Last();
                richTextBox1.Text = lastLine.ToString();
Run Code Online (Sandbox Code Playgroud)

c#

4
推荐指数
1
解决办法
5373
查看次数

标签 统计

c# ×6

file-io ×2

.net ×1

csv ×1

large-files ×1

line ×1

linq ×1

text ×1