C#Iterator Pelaksanaan Teks Fail terbalik Baca
Apabila memproses fail teks besar (terutamanya lebih daripada ratusan ribu baris), penggunaan memori mungkin menjadi hambatan. Iterator menyediakan kaedah pengurusan memori yang cekap yang membaca data melalui bacaan tambahan untuk mengelakkan memuatkan keseluruhan fail ke dalam memori. Walau bagaimanapun, disebabkan kewujudan pelbagai skim pengekodan, lebih mencabar untuk membaca fail teks.
Malangnya, rangka kerja .NET tidak menyediakan fungsi fail teks bacaan terbalik yang terbina. Untuk mencapai fungsi ini, pemprosesan tersuai perlu disesuaikan mengikut skema pengekodan yang digunakan.
Penyelesaian tersuai
Untuk menyelesaikan had ini, kami dapat melaksanakan penyelesaian tersuai kami sendiri. Kod berikut menunjukkan pembaca fail teks terbalik, fail berulang dan dihasilkan dalam urutan terbalik:
Melaksanakan butiran
<code class="language-csharp">public sealed class ReverseLineReader : IEnumerable<string> { public ReverseLineReader(Func<Stream> streamSource, Encoding encoding) { } public IEnumerator<string> GetEnumerator() { } }</code>
StreamFactory:
Pembina menerima komisen
, yang menyediakan aliran untuk dibaca. Ini membolehkan kelas ini digunakan untuk fail dan aliran pada masa yang sama.ReverseLineReader
Pengesan aksara: streamSource
Untuk pengekodan panjang (UTF-8 dan Unicode), pembaca menganalisis mod byte untuk mengenal pasti kedudukan permulaan setiap aksara. Atas ialah kandungan terperinci Bagaimanakah saya dapat membaca fail teks yang besar secara terbalik menggunakan C# iterators?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!