baca kaedah fail teks C#secara terperinci
Dalam reka bentuk program, kadang -kadang fail teks perlu dibaca ke belakang. Ini boleh dilaksanakan oleh Iterators, yang membolehkan data pemprosesan berurutan tanpa memuatkan keseluruhan fail ke dalam memori untuk meningkatkan kecekapan.
Apabila membaca fail teks terbalik, kaedah pengekodan fail mesti dipertimbangkan. Sebagai contoh, jika fail menggunakan pengekodan UTF-8, anda perlu mengenal pasti kedudukan permulaan setiap watak Unicode dan memproses sebarang urutan UTF-8 yang tidak sah.
Serpihan kod C#berikut menunjukkan cara menggunakan Iterator untuk membaca fail teks:
<code class="language-csharp">using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices; public static class ReverseFileStreamReader { public static IEnumerable<string> ReadFileLinesReverse(string filePath) { using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { long fileLength = fileStream.Length; byte[] buffer = new byte[1024]; for (long position = fileLength - buffer.Length; position >= 0; position -= buffer.Length) { fileStream.Seek(position, SeekOrigin.Begin); int bytesRead = fileStream.Read(buffer, 0, buffer.Length); var lines = GetLinesFromBuffer(buffer, bytesRead); foreach (var line in lines) { yield return line; } } } } private static IEnumerable<string> GetLinesFromBuffer(byte[] buffer, int bytesRead) { return new string(GetCharactersFromBuffer(buffer, bytesRead)) .Split('\n') .Reverse(); } private static IEnumerable<char> GetCharactersFromBuffer(byte[] buffer, int bytesRead) { using (var memoryStream = new MemoryStream(buffer, 0, bytesRead)) { using (var streamReader = new StreamReader(memoryStream, Encoding.UTF8)) { while (!streamReader.EndOfStream) { yield return (char)streamReader.Read(); } } } } }</code>
Atas ialah kandungan terperinci Bagaimanakah saya dapat membaca fail teks dengan cekap dengan menggunakan C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!