-3

重複の可能性:
C#でイテレータを使用してテキストファイルを逆に読み取る方法

次のコード行だけで、下から上に700万行を超えるtxtファイルを読み取る必要があります。正しい方法であるか、このタスクにイテレータを使用する必要があるかどうか疑問に思いました。すでにstackoverflowにあるイテレータを使用したいくつかの回答。

        foreach (string line in File.ReadAllLines("read.txt").Reverse())
        {            
            Console.WriteLine(line);
        }
4

1 に答える 1

0

ファイルは行ベースではないため、ファイルの末尾から行を読み取る便利な方法はありません。ファイル全体がメモリに収まる限り、実行していることは正常に機能します。

メモリの問題が発生した場合は、ファイルをチャンクで読み取ることができます。たとえばFile.ReadLines(path).Skip(6000000)、次にFile.ReadLines(path).Skip(5000000).Take(1000000)。これにより、その時点までのファイルが毎回読み取られますが、使用するメモリは少なくなります。

もう1つの方法は、ファイルからバイトのチャンクを読み取り、バイト内の改行を見つけて、それらの間のバイトを文字列にデコードすることです。

于 2012-11-30T09:03:45.217 に答える