TextReader dalam C# digunakan untuk membaca teks atau siri aksara berurutan daripada fail teks. Kelas TextReader ditemui di bawah ruang nama System.IO. Ia adalah kelas asas abstrak StreamReader dan StringReader yang digunakan untuk membaca aksara dari aliran dan rentetan masing-masing. Kami tidak boleh mencipta objek TextReader kerana ia adalah kelas abstrak. TextReader tidak berulir selamat secara lalai. Kelas yang memperoleh TextReader kelas perlu melaksanakan kaedah Peek() dan Read() secara minimum untuk membuat contoh berguna TextReader.
Sintaks:
Sintaks mencipta TextReader adalah seperti berikut:
TextReader text_reader = File.OpenText(file_path);
Pernyataan di atas akan membuka fail di lokasi yang ditentukan oleh 'file_path'. Kemudian, dengan bantuan text_reader, kami boleh menggunakan kaedah kelas TextReader untuk membaca kandungan daripada fail.
Kami juga boleh membuat TextReader dengan bantuan blok 'menggunakan' seperti yang ditunjukkan di bawah:
using(TextReader text_reader = File.OpenText(file_path)) { //user code }
Kelebihan bekerja dengan blok 'menggunakan' ialah ia melepaskan memori yang diperoleh oleh objek yang dinyatakan di dalamnya selepas kerja objek selesai dan objek tidak lagi diperlukan.
Untuk bekerja dengan TextReader, adalah perlu untuk mengimport ruang nama System.IO dalam kod kami. Oleh kerana TextReader ialah kelas abstrak, kami tidak boleh mencipta contohnya secara langsung menggunakan kata kunci 'baru' tetapi kami boleh menggunakan kaedah OpenText() kelas Fail untuk mencapai perkara yang sama, seperti yang ditunjukkan di bawah:
TextReader text_reader = File.OpenText(file_path);
Kaedah OpenText() mengambil lokasi fail sebagai input dan kemudian ia membuka fail teks berkod UTF-8 sedia ada di lokasi yang sama untuk membaca.
Kaedah File.OpenText() mengembalikan objek kelas StreamReader yang merupakan kelas terbitan TextReader dan dengan itu membantu dalam mencipta contoh berguna kelas TextReader dalam kod. Contoh ini boleh digunakan untuk memanggil kaedah kelas TextReader untuk membaca kandungan daripada fail. Kelas TextReader diperoleh daripada kelas abstrak MarshalByRefObject. Hierarki warisannya ditunjukkan di bawah:
Objek → MarshalByRefObject → TextReader
Kami boleh bekerja dengan TextReader dengan bantuan dua kelas terbitannya iaitu StreamReader dan StringReader.
Sila cari beberapa kaedah penting TextReader dalam jadual berikut:
|
Penerangan | ||||||||||||||
Tutup() | Ia digunakan untuk menutup TextReader dan untuk melepaskan sebarang sumber sistem yang berkaitan dengannya. | ||||||||||||||
Buang() | Ia digunakan untuk melepaskan semua sumber yang digunakan oleh objek TextReader. | ||||||||||||||
Peek() | Ia digunakan untuk membaca aksara seterusnya tanpa mengubah keadaan pembaca dan ia mengembalikan aksara seterusnya yang tersedia tanpa benar-benar membacanya daripada pembaca. | ||||||||||||||
Baca() | Ia digunakan untuk membaca aksara seterusnya daripada pembaca teks dan ia juga memajukan kedudukan aksara dengan satu aksara. | ||||||||||||||
ReadLine() | Ia digunakan untuk membaca baris aksara daripada pembaca teks dan ia juga mengembalikan data sebagai rentetan. | ||||||||||||||
ReadToEnd() | Ia digunakan untuk membaca semua aksara dari kedudukan semasa ke penghujung pembaca teks dan ia mengembalikannya sebagai satu rentetan. |
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:
Atas ialah kandungan terperinci TextReader dalam C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!