Lisez la méthode du fichier texte C # en détail
Dans la conception du programme, le fichier texte doit parfois être lu en arrière. Cela peut être implémenté par les itérateurs, ce qui permet des données de traitement séquentielles sans charger le fichier entier en mémoire pour améliorer l'efficacité.
Lors de la lecture du fichier texte inversé, la méthode d'encodage du fichier doit être considérée. Par exemple, si le fichier utilise le codage UTF-8, vous devez identifier correctement la position de départ de chaque caractère Unicode et traiter toute séquence UTF-8 non valide.
Le fragment de code C # suivant montre comment utiliser l'itérateur pour lire le fichier texte:
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!