C# 用c语言逐行读取大型文件#

C# 用c语言逐行读取大型文件#,c#,file-read,C#,File Read,我有巨大的c#文件(超过300MB)。我需要一种有效的方式逐行读取文件,因为一旦我尝试读取它,需要超过30分钟,而目标时间约为3分钟。我尝试了File.ReadAllBytes,它成功且非常快速地读取文件并将其加载到字符串中。但是在那之后,一行一行地处理字符串需要很长时间。有更好的方法还是更快的方法 先谢谢你 您可以使用,它将通过文件行枚举: var lines = File.ReadLines(path); foreach(var line in lines) { // do you

我有巨大的c#文件(超过300MB)。我需要一种有效的方式逐行读取文件,因为一旦我尝试读取它,需要超过30分钟,而目标时间约为3分钟。我尝试了File.ReadAllBytes,它成功且非常快速地读取文件并将其加载到字符串中。但是在那之后,一行一行地处理字符串需要很长时间。有更好的方法还是更快的方法

先谢谢你

您可以使用,它将通过文件行枚举:

var lines = File.ReadLines(path);

foreach(var line in lines)
{
    // do your logic here
}
它不会在第一行加载文件。它将在循环通过
行时加载它,所以这是读取更大文件的更好方法,而不是一次加载

MSDN在
File.ReadLines的说明中说

备注ReadLines和ReadAllLines方法的区别如下:当 如果使用ReadLines,则可以开始枚举字符串集合 在归还全部藏品之前;使用ReadAllLines时, 您必须等待返回整个字符串数组,然后才能执行此操作 可以访问阵列。因此,当您使用非常大的 文件、读线可以更高效


听起来你的问题不是加载,而是处理。您没有发布相关代码。我们讨论的是什么样的过程?File.ReadLines(由wudzik建议)绝对是个好主意。但“300MB”真的没那么大。问:这个300MB文件中有多少行?更重要的是:Q:在每一行的循环中,你到底在做什么?问:有没有办法优化“每行”处理?根据当前信息,您的问题与许多“逐行读取大型文件”的问题重复。请注意,与从文件读取直接相关的实际问题(如从本地磁盘读取300MB)不太可能需要几秒钟,而不是几分钟——提供一些关于您实际使用字符串的信息(在分析代码以提供必要信息后,可能在单独的问题中).Addition info from msdn:>使用ReadLines时,可以在返回整个集合之前开始枚举字符串集合;使用ReadAllLines时,必须等待返回整个字符串数组,然后才能访问该数组。因此,当您处理非常大的文件时,ReadLines可以更高效。@dotnetkid我刚才添加了一个来自MSDN的引用:)