TextWriter est utilisé pour écrire du texte dans un fichier. Voici quelques points importants concernant TextWriter en C#, TextWriter est une classe abstraite sous l'espace de noms IO. Il est utilisé pour écrire une série séquentielle de caractères dans un fichier. Il s'agit de la classe de base de StreamWriter et StringWriter qui est utilisée respectivement pour écrire des caractères dans des flux et des chaînes.
Par défaut, il n'est pas thread-safe. Comme il s’agit d’une classe abstraite, son objet ne peut pas être créé. Toute classe implémentant TextWriter doit implémenter au minimum sa méthode Write(Char) pour créer son instance utile.
Syntaxe avec explication
TextWriter text_writer = File.CreateText(file_path);
L'instruction ci-dessus crée un nouveau fichier s'il n'existe pas à l'emplacement spécifié (file_path). Ensuite, nous pouvons utiliser text_writer pour appeler les méthodes de la classe TextWriter et travailler facilement avec des fichiers en C#.
Nous pouvons créer TextWriter avec une instruction using, telle que :
using(TextWriter text_writer = File.CreateText(file_path)) { //user code }
Il est préférable d'utiliser TextWriter avec l'instruction using car elle indique à .NET de libérer l'objet spécifié dans le bloc using une fois que son travail est terminé et qu'il n'est plus nécessaire.
Pour travailler avec TextWriter, nous devons d’abord importer l’espace de noms System.IO. Désormais, nous ne pouvons pas créer directement une instance de TextWriter en utilisant un mot-clé « new » car il s'agit d'une classe abstraite. Ainsi, pour créer l'instance, nous utilisons la méthode CreateText() de la classe File, telle que :
TextWriter text_writer = File.CreateText(file_path);
Cette méthode prend le chemin du fichier à ouvrir en écriture. Il crée ou ouvre un fichier pour écrire du texte codé en UTF-8. Si le fichier existe déjà, son contenu sera écrasé.
Il renvoie un objet de StreamWriter, qui est la classe dérivée de TextWriter et nous aide ainsi à créer une instance de la classe TextWriter. Désormais, avec l'aide de cette instance, nous pouvons appeler les méthodes de TextWriter pour écrire du texte dans un fichier.
TextWriter est une classe dérivée d'une classe abstraite MarshalByRefObject. Sa hiérarchie d'héritage est la suivante :
Objet ——–> MarshalByRefObject ——–> Écrivain de texte
Comme StreamWriter, il existe d'autres classes dérivées de la classe TextWriter et fournissant l'implémentation pour les membres de TextWriter. Veuillez trouver ci-dessous la liste de ces classes dérivées à l'aide desquelles nous pouvons travailler avec TextWriter :
Parlons maintenant de quelques méthodes importantes de TextWriter, telles que :
Method | Description |
Close() | It is used to close the current writer and it releases any system resources associated with that writer. |
Dispose() | It is used to release all the resources used by the TextWriter object. |
Flush() | It is used to clear all buffers for the current writer and causes any buffered data to be written to the underlying device. |
Synchronized(TextWriter) | It is used to create a thread-safe wrapper around the specified TextWriter. |
Write(Char) | It is used to write a character to the text stream. |
Write(String) | It is used to write the string to the text stream. |
WriteAsync(Char) | It is used to write the character to the text stream asynchronously. |
WriteLine() | It is used to write line terminator to the text stream. |
WriteLineAsync(String) | It is used to write the string to the text stream asynchronously followed by a line terminator. |
Example
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp2 { class Program { public static void Main() { string file = @"E:\Content\textWriter.txt"; // check if the file exists try { if (File.Exists(file)) { File.Delete(file); } // create the file using (TextWriter writer = File.CreateText(file)) { writer.WriteLine("TextWriter is an abstract class under " + "System.IO namespace. It is used to write sequential " + "series of characters into a file. It is the base class " + "of StreamWriter and StringWriter which is used to " + "write characters to streams and strings respectively. " + "By default, it is not thread safe. " + "As it is an abstract class, its object cannot be created. " + "Any class implementing TextWriter must minimally implement " + "its Write(Char) method to create its useful instance. "); } } catch (Exception ex) { Console.WriteLine(ex.Message); } } } }
Output:
We can asynchronously write characters to stream by using WriteAsync(Char) method such as:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp2 { public class Program { public static void Main(string[] args) { WriteCharAsync(); } public static async void WriteCharAsync() { string file = @"E:\Content\textWriterAsync.txt"; try { //check if file already exists if (File.Exists(file)) { File.Delete(file); } using (StreamWriter writer = File.CreateText(file)) { await writer.WriteLineAsync("TextWriter is an abstract class under "+ "System.IO namespace. It is used to write sequential " + "series of characters into a file. It is the base class " + "of StreamWriter and StringWriter which is used to " + "write characters to streams and strings respectively. " + "By default, it is not thread safe. " + "As it is an abstract class, its object cannot be created. " + "Any class implementing TextWriter must minimally implement " + "its Write(Char) method to create its useful instance. "); await writer.WriteLineAsync("We are writing characters " + "asynchronously."); } } catch(Exception ex) { Console.WriteLine(ex.Message); } } } }
Output:
TextWriter is used to write text or sequential series of characters to a file. A class derived from the TextWriter class needs to provide implementation to any of the members of the TextWriter. Write() methods of TextWriter with primitive data types as parameters write out values as strings.
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!