C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のStringWriterとStringReaderとは?文字列の読み書き方法を解説

C#におけるStringWriterStringReaderは、それぞれTextWriterTextReaderクラスから派生したクラスです。これらを使うことで、メモリ上の文字列に対して効率的に読み書きを行うことができます。

StringWriterとは

StringWriterは、文字列バッファ(内部ではStringBuilder)へ情報を書き込むためのクラスです。TextWriterを実装しており、ファイルではなく文字列に対してテキストを出力したい場合に便利です。

StringWriterの使用例

以下の例では、StringReaderで読み取った文字列を処理し、ピリオド(.)を見つけたら改行2つに置き換えてStringWriterへ書き込んでいます。

StringWriter sWriter = new StringWriter();
while(true) {
    myChar = strReader.Read();
    if(myChar == -1) break;

    convertedChar = Convert.ToChar(myChar);
    if(convertedChar == '.') {
        sWriter.Write(".\n\n");

        sReader.Read();
        sReader.Read();
    } else {
        sWriter.Write(convertedChar);
    }
}

StringReaderとは

StringReaderは、文字列からデータを読み取るためのクラスです。通常のテキストファイルと同じように、文字列を1文字ずつ、あるいは一括で読み込むことができます。

StringReaderの使用例

以下の例では、StringBuilderで複数行の文字列を作成し、StringReaderを使って非同期で全内容を読み込んでいます。

StringBuilder sbuilder = new StringBuilder();

// 文字列を追加
sbuilder.AppendLine("一行目の文字列");
sbuilder.AppendLine("二行目の文字列");
sbuilder.AppendLine("三行目の文字列");

// 文字列を読み込む
using (StringReader sReader = new StringReader(sbuilder.ToString())) {
    string readString = await sReader.ReadToEndAsync();
    Console.WriteLine(readString);
}

まとめ

StringWriterは文字列への書き込み、StringReaderは文字列からの読み取りを担当します。どちらもTextReader/TextWriter系のAPIと共通のインターフェースを持つため、ファイル操作のコードをそのまま文字列操作に置き換えられるのが大きなメリットです。テストコードや一時的なテキスト処理など、実際のファイルI/Oを避けたい場面で特に役立ちます。

  1. JavaのStringReaderクラスとは?重要性と基本的な使い方を徹底解説

    StringReaderクラスは、java.ioパッケージに属するReaderクラスのサブクラスです。文字列を入力源として扱い、その内容を文字ストリームとして読み取ることができます。StringReaderクラスはReaderクラスのすべてのメソッドをオーバーライドしており、代表的なメソッドにはread()、skip()、close()、mark()、markSupported()、reset()などがあります。 主なメソッド read():ストリームから1文字ずつ読み込みます。終端に達すると-1を返します。 skip(long n):指定した数の文字を読み飛ばします。 mark(int r

  2. JavaのStringWriterクラスとは?重要性と基本の使い方を徹底解説

    StringWriterクラスは、Writerクラスのサブクラスであり、文字列を出力ストリームへ書き込むための文字ストリームです。文字列を書き込む際には、データを内部の文字列バッファ(StringBuffer)に一旦蓄積し、そこから文字列として取り出す仕組みになっています。バッファは書き込まれたデータ量に応じて自動的に拡張されるため、あらかじめ容量を意識する必要はありません。 StringWriterは、ファイルやネットワーク接続ではなく、メモリ上に出力結果を文字列として保持したい場合に特に便利です。例えば、テンプレートエンジンでのHTML組み立てや、動的なログ・レポートの生成など、Writ