ホームページ >バックエンド開発 >C++ >ファイル全体をメモリにロードせずに、テキスト ファイルの特定の行に効率的にアクセスするにはどうすればよいですか?

ファイル全体をメモリにロードせずに、テキスト ファイルの特定の行に効率的にアクセスするにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-15 08:01:46694ブラウズ

How Can I Efficiently Access a Specific Line in a Text File Without Loading the Entire File into Memory?

メモリの使用を避けるために、テキスト ファイルの指定された行を効率的に読み取ります

この記事では、ファイル全体をメモリにロードせずに、テキスト ファイルの指定した行を効率的に読み取る方法をいくつか紹介します。

.NET 4.0 以降

.NET 4.0 以降ではスキップ ライン メソッドを使用できます:

<code>string line = File.ReadLines(FileName).Skip(14).Take(1).First();</code>

このメソッドは、ファイル全体をメモリにロードせずに、15 行目を直接読み取ります。

.NET 4.0 以下

.NET 4.0 より前では、1 行ずつスキップする必要があります:

<code>string GetLine(string fileName, int line)
{
   using (var sr = new StreamReader(fileName)) {
       for (int i = 1; i < line; i++)
          sr.ReadLine();
       return sr.ReadLine();
   }
}</code>

このメソッドは必要な行のみを読み取るため、メモリ消費量が削減されます。

メモ

行をスキップするアプローチでは、ファイル全体をメモリに保存する必要はありませんが、ファイルの終わりに近い行にアクセスする場合は効率が低くなる可能性があります。さらに、ファイル構造では、変化する可能性のある行番号に依存せずに、行番号を正確に決定できる必要があります。

以上がファイル全体をメモリにロードせずに、テキスト ファイルの特定の行に効率的にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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