Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya dapat membaca fail teks dengan cekap dengan menggunakan C#?
baca kaedah fail teks C#secara terperinci
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>Kod ini boleh membaca fail teks terbalik dan memproses setiap baris yang dihasilkan dalam rangka. Ia menggunakan iterator untuk mengelakkan membaca keseluruhan fail ke dalam ingatan pada satu masa, dengan itu meningkatkan kecekapan memproses fail besar. Pada masa yang sama, ia menggunakan untuk memastikan pemprosesan fail pengekodan UTF-8 yang betul.
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!