ホームページ >バックエンド開発 >C++ >C# で大きなテキスト ファイルから行を効率的に削除するにはどうすればよいですか?

C# で大きなテキスト ファイルから行を効率的に削除するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-14 09:08:43364ブラウズ

How Can I Efficiently Delete Lines from Large Text Files in C#?

C# の効率的なテキストファイル行削除方法

テキスト ファイルを処理する場合、特定の行を削除する必要があることがよくあります。この記事では、特に大きなテキスト ファイルを処理する場合に、このタスクを C# で実行するための効率的なソリューションについて説明します。

ソリューションの概要

このスキームは一時ファイルを作成し、削除する行を除いた行を元のファイルから一時ファイルに選択的にコピーします。対象行の処理が完了すると、元のファイルが一時ファイルに置き換えられ、不要な行が削除されます。

コードの実装

<code class="language-csharp">string tempFile = Path.GetTempFileName();

using (StreamReader sr = new StreamReader("file.txt"))
using (StreamWriter sw = new StreamWriter(tempFile))
{
    string line;

    while ((line = sr.ReadLine()) != null)
    {
        if (line != "removeme")
            sw.WriteLine(line);
    }
}

File.Delete("file.txt");
File.Move(tempFile, "file.txt");</code>

このメソッドは、更新されたファイルから対象の行を除外し、必要な行のみを確実に保持します。

その他の考慮事項

  • パフォーマンス: 大きなファイルの場合、この方法では行を順番に処理することでメモリ使用量とディスク I/O を最小限に抑えます。
  • エンコーディング: このコードは、テキスト ファイルが UTF-8 エンコーディングを使用していることを前提としています。必要に応じてエンコードを調整します。
  • メモリ処理: ファイルが小さい場合、メモリ処理の方が効率的である可能性があります。次の点を考慮してください:
<code class="language-csharp">File.WriteAllLines("file.txt",
    File.ReadLines("file.txt").Where(l => l != "removeme").ToList());</code>

このメソッドは一時ファイルの作成を回避しますが、ToList() を使用して即時に実行する必要があります。

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

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