C#의 TextReader는 텍스트 파일에서 텍스트나 일련의 문자를 읽는 데 사용됩니다. TextReader 클래스는 System.IO 네임스페이스 아래에 있습니다. 스트림과 문자열에서 각각 문자를 읽는 데 사용되는 StreamReader 및 StringReader의 추상 기본 클래스입니다. TextReader는 추상 클래스이기 때문에 객체를 생성할 수 없습니다. TextReader는 기본적으로 스레드로부터 안전하지 않습니다. TextReader 클래스를 파생하는 클래스는 유용한 TextReader 인스턴스를 만들기 위해 Peek() 및 Read() 메서드를 최소한으로 구현해야 합니다.
구문:
TextReader 생성 구문은 다음과 같습니다.
TextReader text_reader = File.OpenText(file_path);
위 명령문은 'file_path'에 지정된 위치에 있는 파일을 엽니다. 그런 다음 text_reader의 도움으로 TextReader 클래스의 메서드를 사용하여 파일의 내용을 읽을 수 있습니다.
아래와 같이 'using' 블록을 사용하여 TextReader를 만들 수도 있습니다.
using(TextReader text_reader = File.OpenText(file_path)) { //user code }
'using' 블록 작업의 장점은 객체 작업이 완료되고 객체가 더 이상 필요하지 않은 후 내부에 지정된 객체가 획득한 메모리를 해제한다는 것입니다.
TextReader를 사용하려면 코드에 System.IO 네임스페이스를 가져와야 합니다. TextReader는 추상 클래스이므로 'new' 키워드를 사용하여 인스턴스를 직접 생성할 수는 없지만 아래와 같이 File 클래스의 OpenText() 메서드를 사용하여 동일한 결과를 얻을 수 있습니다.
TextReader text_reader = File.OpenText(file_path);
OpenText() 메서드는 파일 위치를 입력으로 가져온 다음 읽기 위해 동일한 위치에 있는 기존 UTF-8 인코딩 텍스트 파일을 엽니다.
File.OpenText() 메서드는 TextReader의 파생 클래스인 StreamReader 클래스의 개체를 반환하므로 코드에서 TextReader 클래스의 유용한 인스턴스를 만드는 데 도움이 됩니다. 이 인스턴스는 TextReader 클래스의 메서드를 호출하여 파일의 내용을 읽는 데 사용할 수 있습니다. TextReader 클래스는 추상 클래스 MarshalByRefObject에서 파생됩니다. 상속 계층 구조는 다음과 같습니다.
객체 → MarshalByRefObject → TextReader
StreamReader와 StringReader라는 두 가지 파생 클래스를 사용하여 TextReader로 작업할 수 있습니다.
다음 표에서 TextReader의 몇 가지 중요한 메소드를 찾아보세요.
Method | Description |
Close() | It is used to close the TextReader and to release any system resources associated with it. |
Dispose() | It is used to release all the resources used by an object of TextReader. |
Peek() | It is used to read the next character without changing the state of the reader and it returns the next available character without actually reading it from the reader. |
Read() | It is used to read the next character from the text reader and it also advances the character position by one character. |
ReadLine() | It is used to read a line of characters from the text reader and it also returns the data as a string. |
ReadToEnd() | It is used to read all characters from the current position to the end of the text reader and it returns them as one string. |
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:
위 내용은 C#의 TextReader의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!