ホームページ > バックエンド開発 > C++ > Iteratorsを使用してC#でTextファイルを下から上に効率的に読み取るにはどうすればよいですか?

Iteratorsを使用してC#でTextファイルを下から上に効率的に読み取るにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-29 12:11:39
オリジナル
365 人が閲覧しました

How Can I Efficiently Read a Text File from Bottom to Top in C# Using Iterators?

イテレータを効率的に逆にしてC#テキストファイルを読む

多くのプログラミングタスクには、大規模なテキストファイルの処理が含まれます。ファイルの最後からファイルを処理する場合、ファイル全体をメモリにロードするよりも、ファイルベースのメソッドの使用が効率的です。

ファイルベースの逆ファイルを読む

.NETフレームワークは、ソリューションで構築された便利な逆読み取りファイルを提供しませんでした。これを実現するためにイテレーターを使用するには、カスタムクラスを実現できます。 このタイプの使用ファイルを逆の順序で生成するために、ファイル全体をメモリにロードする必要はありません。

の使用方法:

<code class="language-csharp">public class ReverseLineReader : IEnumerable<string>
{
    private readonly Func<Stream> streamSource;
    private readonly Encoding encoding;
    private readonly int bufferSize;
    private readonly Func<long, bool, byte[]> characterStartDetector;

    public ReverseLineReader(Func<Stream> streamSource)
        : this(streamSource, Encoding.UTF8)
    {
    }

    public ReverseLineReader(Func<Stream> streamSource, Encoding encoding)
        : this(streamSource, encoding, DefaultBufferSize)
    {
    }

    internal ReverseLineReader(Func<Stream> streamSource, Encoding encoding, int bufferSize)
    {
        this.streamSource = streamSource;
        this.encoding = encoding;
        this.bufferSize = bufferSize;

        // 根据编码类型设置 characterStartDetector。
        // ...

    }

    public IEnumerator<string> GetEnumerator()
    {
        //并非所有流实现都支持查找和读取,如果出现这种情况,则返回异常。

        Stream stream = streamSource();
        try
        {
            // ...
        }
        finally
        {
            // 在此处释放流。
        }
    }

    // 在此处添加处理反向读取和处理流的其他方法。
    // ...

    // 在此处添加处理 characterStartDetector 逻辑的其他方法。
    // ...
}</code>
ログイン後にコピー

Iteratorを使用することにより、ファイル全体をメモリにロードすることを避け、逆順序で処理できます。この方法は、メモリ消費に特に役立ちます。大きなテキストファイルです。

以上がIteratorsを使用してC#でTextファイルを下から上に効率的に読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート