Maison  >  Article  >  développement back-end  >  TextWriter en C#

TextWriter en C#

PHPz
PHPzoriginal
2024-09-03 15:22:45188parcourir

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.

Comment fonctionne TextWriter en C# ?

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 :

  • IndentedTextWriter : Il est utilisé pour insérer une chaîne de tabulation et pour suivre le niveau d'indentation actuel.
  • StreamWriter : Il est utilisé pour écrire des caractères dans un flux dans un encodage particulier.
  • StringWriter : Il est utilisé pour écrire des informations dans une chaîne. Les informations sont stockées dans un StringBuilder sous-jacent.
  • HttpWriter : Il fournit un objet de classe TextWriter accessible via l'objet intrinsèque HttpResponse.
  • HtmlTextWriter : Il est utilisé pour écrire des caractères de balisage et du texte dans un flux de sortie de contrôle de serveur ASP.NET.

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.
Méthode Description Fermer() Il est utilisé pour fermer le rédacteur actuel et libère toutes les ressources système associées à ce rédacteur. Dispose() Il permet de libérer toutes les ressources utilisées par l'objet TextWriter. Flush() Il est utilisé pour effacer tous les tampons de l'enregistreur actuel et provoque l'écriture de toutes les données mises en tampon sur le périphérique sous-jacent. Synchronisé (TextWriter) Il est utilisé pour créer un wrapper thread-safe autour du TextWriter spécifié. Écrire(Char) Il est utilisé pour écrire un caractère dans le flux de texte. Écrire(Chaîne) Il est utilisé pour écrire la chaîne dans le flux de texte. WriteAsync(Char) Il est utilisé pour écrire le caractère dans le flux de texte de manière asynchrone. WriteLine() Il est utilisé pour écrire un terminateur de ligne dans le flux de texte. WriteLineAsync(String) Il est utilisé pour écrire la chaîne dans le flux de texte de manière asynchrone suivie d'un terminateur de ligne.

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:

TextWriter en C#

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 en C#

Conclusion

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Lecteur binaire C#Article suivant:Lecteur binaire C#