首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在.NET中读取一个大(1 GB)的txt文件?

如何在.NET中读取一个大(1 GB)的txt文件?
EN

Stack Overflow用户
提问于 2010-11-25 12:21:59
回答 6查看 86.9K关注 0票数 60

我有一个1 GB的文本文件,我需要逐行阅读。执行此操作的最佳和最快方法是什么?

代码语言:javascript
复制
private void ReadTxtFile()
{            
    string filePath = string.Empty;
    filePath = openFileDialog1.FileName;
    if (string.IsNullOrEmpty(filePath))
    {
        using (StreamReader sr = new StreamReader(filePath))
        {
            String line;
            while ((line = sr.ReadLine()) != null)
            {
                FormatData(line);                        
            }
        }
    }
}

FormatData()中,我检查行的起始字,它必须与一个字匹配,并在此基础上递增一个整数变量。

代码语言:javascript
复制
void FormatData(string line)
{
    if (line.StartWith(word))
    {
        globalIntVariable++;
    }
}
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-11-25 12:29:31

如果您使用的是.NET 4.0,请尝试MemoryMappedFile,它是为此场景设计的类。

否则,您可以使用StreamReader.ReadLine

票数 52
EN

Stack Overflow用户

发布于 2010-11-26 22:25:45

您可以使用LINQ

代码语言:javascript
复制
int result = File.ReadLines(filePath).Count(line => line.StartsWith(word));

File.ReadLines返回一个IEnumerable,它懒惰地从文件中读取每一行,而不将整个文件加载到内存中。

Enumerable.Count计算以单词开头的行数。

如果从UI线程调用,请使用BackgroundWorker

票数 16
EN

Stack Overflow用户

发布于 2010-11-25 12:26:01

StreamReader.ReadLine应该可以很好地工作。让框架选择缓冲,除非您通过分析知道可以做得更好。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4273699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档