C# の TextReader

WBOY
WBOYオリジナル
2024-09-03 15:22:541125ブラウズ

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 は C# でどのように動作しますか?

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

TextReader は、StreamReader と StringReader という 2 つの派生クラスを利用して操作できます。

  • StreamReader: 特定のエンコーディングでバイト ストリームから文字を読み取るために使用されます。
  • StringReader: 文字列からテキストを読み取るために使用されます。

次の表で 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.
メソッド 説明 閉じる() TextReader を閉じ、それに関連付けられているシステム リソースを解放するために使用されます。 廃棄() TextReader のオブジェクトによって使用されるすべてのリソースを解放するために使用されます。 ピーク() これは、リーダーの状態を変更せずに次の文字を読み取るために使用され、実際にリーダーから文字を読み取ることなく、次に使用可能な文字を返します。 読み取り() テキスト リーダーから次の文字を読み取るために使用され、また文字位置を 1 文字分進めます。 ReadLine() テキスト リーダーから文字行を読み取るために使用され、データを文字列として返します。 ReadToEnd() これは、現在の位置からテキスト リーダーの最後までのすべての文字を読み取るために使用され、それらを 1 つの文字列として返します。 テーブル>

Examples of TextReader in C#

We can pass a text file name in a TextReader constructor to create an object. Following are the different examples of TextReader in C#.

Example #1

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:

C# の TextReader

Example #2

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:

C# の TextReader

Example #3

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:

C# の TextReader

Example #4

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

Conclusion

  • TextReader is an abstract class that is used to read text or sequential series of characters from a text file.
  • StreamReader and StringReader are two derived classes of TextReader with the help of which we can implement the methods of TextReader to read content from the text files.

以上がC# の TextReaderの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:C# の TextWriter次の記事:C# の TextWriter