イテレータを効率的に逆にして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 サイトの他の関連記事を参照してください。