TextReader en C# est utilisé pour lire du texte ou des séries séquentielles de caractères à partir d'un fichier texte. La classe TextReader se trouve sous l’espace de noms System.IO. Il s'agit d'une classe de base abstraite de StreamReader et StringReader qui sont utilisées respectivement pour lire les caractères du flux et de la chaîne. Nous ne pouvons pas créer un objet de TextReader car c'est une classe abstraite. TextReader n'est pas thread-safe par défaut. La classe TextReader dérivant de la classe doit implémenter au minimum les méthodes Peek() et Read() afin de créer une instance utile de TextReader.
Syntaxe :
La syntaxe de création de TextReader est la suivante :
TextReader text_reader = File.OpenText(file_path);
L'instruction ci-dessus ouvrira un fichier à l'emplacement spécifié par 'file_path'. Ensuite, avec l'aide de text_reader, nous pouvons utiliser les méthodes de la classe TextReader afin de lire le contenu du fichier.
Nous pouvons également créer TextReader à l'aide du bloc « using » comme indiqué ci-dessous :
using(TextReader text_reader = File.OpenText(file_path)) { //user code }
L'avantage de travailler avec le bloc « using » est qu'il libère la mémoire acquise par l'objet spécifié à l'intérieur une fois le travail de l'objet terminé et que l'objet n'est plus nécessaire.
Pour travailler avec TextReader, il est nécessaire d'importer l'espace de noms System.IO dans notre code. Comme TextReader est une classe abstraite, nous ne pouvons pas créer son instance directement à l'aide du mot-clé 'new' mais nous pouvons utiliser la méthode OpenText() de la classe File pour obtenir le même résultat, comme indiqué ci-dessous :
TextReader text_reader = File.OpenText(file_path);
La méthode OpenText() prend l'emplacement du fichier en entrée, puis ouvre un fichier texte codé UTF-8 existant au même emplacement pour la lecture.
La méthode File.OpenText() renvoie un objet de la classe StreamReader qui est la classe dérivée de TextReader et aide ainsi à créer une instance utile de la classe TextReader dans le code. Cette instance peut être utilisée pour appeler les méthodes de la classe TextReader pour lire le contenu du fichier. La classe TextReader est dérivée d'une classe abstraite MarshalByRefObject. Sa hiérarchie d'héritage est présentée ci-dessous :
Objet → MarshalByRefObject → TextReader
Nous pouvons travailler avec TextReader à l'aide de ses deux classes dérivées, à savoir StreamReader et StringReader.
Veuillez trouver quelques méthodes importantes de TextReader dans le tableau suivant :
|
Description | ||||||||||||||
Fermer() | Il est utilisé pour fermer TextReader et libérer toutes les ressources système qui lui sont associées. | ||||||||||||||
Dispose() | Il permet de libérer toutes les ressources utilisées par un objet de TextReader. | ||||||||||||||
Peek() | Il est utilisé pour lire le caractère suivant sans changer l'état du lecteur et il renvoie le prochain caractère disponible sans le lire réellement à partir du lecteur. | ||||||||||||||
Lire() | Il est utilisé pour lire le caractère suivant à partir du lecteur de texte et il avance également la position du caractère d'un caractère. | ||||||||||||||
ReadLine() | Il est utilisé pour lire une ligne de caractères à partir du lecteur de texte et il renvoie également les données sous forme de chaîne. | ||||||||||||||
ReadToEnd() | Il est utilisé pour lire tous les caractères de la position actuelle jusqu'à la fin du lecteur de texte et les renvoie sous la forme d'une seule chaîne. |
We can pass a text file name in a TextReader constructor to create an object. Following are the different examples of TextReader in C#.
Reading a line of a file using the ReadLine() method of TextReader.
Code:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp3 { public class Program { public static void Main() { string file = @"E:\Content\TextReader.txt"; try { if (File.Exists(file)) { // opening the text file and reading a line using (TextReader textReader = File.OpenText(file)) { Console.WriteLine(textReader.ReadLine()); } } else { Console.WriteLine("File does not exist!"); } Console.ReadKey(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } }
Output:
Reading five characters from a file using the ReadBlock() method of TextReader.
Code:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp3 { public class Program { public static void Main() { string file = @"E:\Content\TextReader.txt"; try { if (File.Exists(file)) { //Opening the text file and reading 5 characters using (TextReader textReader = File.OpenText(file)) { char[] ch = new char[5]; textReader.ReadBlock(ch, 0, 5); Console.WriteLine(ch); } } else { Console.WriteLine("File does not exist!"); } Console.ReadKey(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } }
Output:
Reading the whole content of a text file using the ReadToEnd() method of TextReader.
Code:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp3 { public class Program { public static void Main() { string file = @"E:\Content\TextReader.txt"; string content = String.Empty; try { if (File.Exists(file)) { //Opening a text file and reading the whole content using (TextReader tr = File.OpenText(file)) { content = tr.ReadToEnd(); Console.WriteLine(content); } } else { Console.WriteLine("File does not exist!"); } Console.ReadKey(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } }
Output:
Reading the content of a text file using TextReader and writing it to another file.
Code:
using System; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp3 { public class Program { public static void Main() { string fileToRead = @"E:\Content\TextReader.txt"; string fileToWrite = @"E:\Content\TextReaderAndWriter.txt"; StringBuilder content = new StringBuilder(); string str = String.Empty; try { //checking if the file exists to read if (File.Exists(fileToRead)) { //Opening a text file and reading the whole content using (TextReader textReader = File.OpenText(fileToRead)) { while ((str = textReader.ReadLine()) != null) { content.Append("\n" + str); } } } else { Console.WriteLine("File does not exist!"); } //checking if the file to write content already exists if (File.Exists(fileToWrite)) { File.Delete(fileToWrite); } //creating file if it does not exist using (TextWriter textWriter = File.CreateText(fileToWrite)) { textWriter.WriteLine(content); } Console.ReadKey(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } }
Output:
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!