Heim >Backend-Entwicklung >C#.Net-Tutorial >TextReader in C#
TextReader in C# wird zum Lesen von Text oder aufeinanderfolgenden Zeichenreihen aus einer Textdatei verwendet. Die TextReader-Klasse befindet sich im System.IO-Namespace. Es handelt sich um eine abstrakte Basisklasse von StreamReader und StringReader, die zum Lesen von Zeichen aus Stream bzw. String verwendet wird. Wir können kein Objekt von TextReader erstellen, da es sich um eine abstrakte Klasse handelt. TextReader ist standardmäßig nicht threadsicher. Die von der Klasse abgeleitete TextReader-Klasse muss die Methoden Peek() und Read() minimal implementieren, um eine nützliche Instanz von TextReader zu erstellen.
Syntax:
Syntax zum Erstellen von TextReader ist wie folgt:
TextReader text_reader = File.OpenText(file_path);
Die obige Anweisung öffnet eine Datei an dem durch „file_path“ angegebenen Speicherort. Dann können wir mit Hilfe des text_reader die Methoden der TextReader-Klasse verwenden, um Inhalte aus der Datei zu lesen.
Wir können TextReader auch mit Hilfe des „using“-Blocks erstellen, wie unten gezeigt:
using(TextReader text_reader = File.OpenText(file_path)) { //user code }
Der Vorteil der Arbeit mit dem „using“-Block besteht darin, dass er den von dem darin angegebenen Objekt erworbenen Speicher freigibt, nachdem die Arbeit des Objekts abgeschlossen ist und das Objekt nicht mehr benötigt wird.
Um mit TextReader arbeiten zu können, ist es notwendig, den System.IO-Namespace in unseren Code zu importieren. Da TextReader eine abstrakte Klasse ist, können wir seine Instanz nicht direkt mit dem Schlüsselwort „new“ erstellen, aber wir können die OpenText()-Methode der File-Klasse verwenden, um dasselbe zu erreichen, wie unten gezeigt:
TextReader text_reader = File.OpenText(file_path);
Die OpenText()-Methode verwendet den Speicherort der Datei als Eingabe und öffnet dann eine vorhandene UTF-8-codierte Textdatei am selben Speicherort zum Lesen.
Die File.OpenText()-Methode gibt ein Objekt der StreamReader-Klasse zurück, die die abgeleitete Klasse von TextReader ist und somit beim Erstellen einer nützlichen Instanz der TextReader-Klasse im Code hilft. Diese Instanz kann verwendet werden, um die Methoden der TextReader-Klasse aufzurufen, um Inhalte aus der Datei zu lesen. Die TextReader-Klasse ist von einer abstrakten Klasse MarshalByRefObject abgeleitet. Die Vererbungshierarchie ist unten dargestellt:
Objekt → MarshalByRefObject → TextReader
Wir können mit TextReader mithilfe seiner beiden abgeleiteten Klassen arbeiten, nämlich StreamReader und StringReader.
Einige wichtige Methoden von TextReader finden Sie in der folgenden Tabelle:
|
Beschreibung | ||||||||||||||
Schließen() | Es wird verwendet, um den TextReader zu schließen und alle damit verbundenen Systemressourcen freizugeben. | ||||||||||||||
Dispose() | Es wird verwendet, um alle von einem TextReader-Objekt verwendeten Ressourcen freizugeben. | ||||||||||||||
Peek() | Es wird verwendet, um das nächste Zeichen zu lesen, ohne den Status des Lesegeräts zu ändern, und es gibt das nächste verfügbare Zeichen zurück, ohne es tatsächlich vom Lesegerät zu lesen. | ||||||||||||||
Read() | Es wird verwendet, um das nächste Zeichen aus dem Textleser zu lesen und die Zeichenposition um ein Zeichen weiterzurücken. | ||||||||||||||
ReadLine() | Es wird verwendet, um eine Zeile mit Zeichen aus dem Textleser zu lesen und gibt die Daten auch als String zurück. | ||||||||||||||
ReadToEnd() | Es wird verwendet, um alle Zeichen von der aktuellen Position bis zum Ende des Textlesers zu lesen und sie als eine Zeichenfolge zurückzugeben. |
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:
Das obige ist der detaillierte Inhalt vonTextReader in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!