ホームページ >バックエンド開発 >C++ >C# を使用して大きなテキスト ファイルの特定の行に効率的にアクセスするにはどうすればよいですか?

C# を使用して大きなテキスト ファイルの特定の行に効率的にアクセスするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-15 09:28:44621ブラウズ

高效读取大型文本文件中的特定行 (C#)

C# は大きなテキスト ファイル内の特定の行を効率的に読み取ります

ファイル全体を文字列の配列として保存するというメモリを大量に消費する解決策を回避し、大きなテキスト ファイルから特定の行を読み取る必要があります。次の方法を実現できます:

方法 1: バイト オフセット方法

  • ファイル内のターゲット行のバイトオフセットを計算します。
  • FileStream.Seek メソッドを使用して、計算されたオフセットにファイル ストリームを配置します。
  • 行を読むには StreamReader.ReadLine() を使用します。

方法 2: LINQ メソッド (.NET 4.0 以降に適用可能)

  • File.ReadLines(fileName).Skip(line - 1).Take(1).First()を使用します。
  • このメソッドを使用すると、ファイル全体を読み取ることなく、個々の行に直接アクセスできます。

方法 3: カスタム行リーダー

  • 行を読み取る前に指定されたバイト数をスキップするカスタム行リーダーを作成します。この方法は行数が少ない場合に適しており、効率的に処理できます。

例 (方法 1)

<code class="language-csharp">public static string GetLine(string fileName, int line)
{
    using (var sr = new StreamReader(fileName))
    {
        // ... (代码略,此处需补充计算字节偏移量和读取行的逻辑) ...
    }
}</code>

構造化ドキュメントの処理

構造化ドキュメントの場合、次の戦略を使用できます:

  • File.ReadLines(fileName).Take(25).ToArray() を使用して最初の 25 行を読みます。
  • 行 17 を解析して変数 X の値を決定します。
  • File.ReadLines(fileName).Skip(25).Take(X).ToArray() を使用して、次の X 行を読み取ります。

これらのメソッドを使用すると、ファイル全体をメモリにロードせずに、大きなテキスト ファイルから特定の行を効率的に読み取ることができます。 どの方法を選択するかは、ファイルの特定のサイズ、構造、および .NET Framework のバージョンによって異なります。

以上がC# を使用して大きなテキスト ファイルの特定の行に効率的にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。