TextWriter クラス

一連の文字を書き込むことができるライタを表します。このクラスは抽象クラスです。

この型のすべてのメンバの一覧については、TextWriter メンバ を参照してください。

System.Object
   System.MarshalByRefObject
      System.IO.TextWriter
         System.CodeDom.Compiler.IndentedTextWriter
         System.IO.StreamWriter
         System.IO.StringWriter
         System.Web.HttpWriter
         System.Web.UI.HtmlTextWriter

<Serializable>
MustInherit Public Class TextWriter   Inherits MarshalByRefObject   Implements IDisposable
[C#]
[Serializable]
public abstract class TextWriter : MarshalByRefObject, IDisposable
[C++]
[Serializable]
public __gc __abstract class TextWriter : public   MarshalByRefObject, IDisposable
[JScript]
public
   Serializable
abstract class TextWriter extends MarshalByRefObject   implements IDisposable

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

TextWriter は、ストリームと文字列に文字を書き込む StreamWriter および StringWriter の抽象基本クラスです。オブジェクトを文字列に書き込む、文字列をファイルに書き込む、または、XML のシリアライズを行うには、 TextWriter のインスタンスを作成します。また、 TextReader を使用すると、文字列またはストリームに対して使用するものと同一の API でカスタム バッキング ストアにテキストを書き込むことができます。また、テキストに対する書式設定のサポートを追加することもできます。

パラメータとしてプリミティブ データ型を持っている TextWriterWrite メソッドはすべて、文字列として値を書き込みます。

既定では、 TextWriter はスレッドセーフではありません。スレッド セーフ ラッパーについては、 TextWriter.Synchronized のトピックを参照してください。

TextWriter クラスの有用なインスタンスを作成するには、派生クラスで少なくとも TextWriter(Char) メソッドを実装する必要があります。

その他の一般的な I/O タスクまたは関連する I/O タスクの例を次の表に示します。

実行するタスク 参考例があるトピック
テキスト ファイルを作成する。 ファイルへのテキストの書き込み
テキスト ファイルに書き込む。 ファイルへのテキストの書き込み
テキスト ファイルから読み取る。 ファイルからのテキストの読み取り
テキストをファイルに追加する。 ログ ファイルのオープンと追加

File.AppendText

FileInfo.AppendText

ファイルのサイズを取得する。 FileInfo.Length
ファイルの属性を取得する。 File.GetAttributes
ファイルの属性を設定する。 File.SetAttributes
ファイルが存在するかどうかを判別する。 File.Exists
バイナリ ファイルから読み取る。 新しく作成したデータ ファイルの読み取りと書き込み
バイナリ ファイルに書き込む。 新しく作成したデータ ファイルの読み取りと書き込み

使用例

[Visual Basic, C#, C++] TextReader タイプと TextWriter タイプのポリモーフィックな動作の例を次に示します。 aStringWriteraStreamWriter は両方とも TextWriter タイプであるため、両方のオブジェクトで WriteVowel メソッドが呼び出され、それぞれのタイプに関連付けられた Write メソッドが実行されます。同様に、 aStringReaderaStreamReader の両方で ReadText メソッドが呼び出され、正しい ReadToEnd メソッドが実行されます。 aStringWriter および aStringReader のバッキング ストアは文字列であり、 aStreamWriter および aStreamReader のバッキング ストアはファイルです。

 
Imports System
Imports System.IO

Public Class TextRW

    Shared Sub Main()
        Dim aStringWriter, aStreamWriter As TextWriter
        aStringWriter = New StringWriter()
        aStreamWriter = New StreamWriter("InvalidPathChars.txt")
        
        WriteText(aStringWriter)
        WriteText(aStreamWriter)
        aStreamWriter.Close()
        
        Dim aStringReader, aStreamReader As TextReader
        aStringReader = New StringReader(aStringWriter.ToString())
        aStreamReader = New StreamReader("InvalidPathChars.txt")
        
        ReadText(aStringReader)
        ReadText(aStreamReader)
        aStreamReader.Close()
    End Sub

    Shared Sub WriteText(aTextWriter As TextWriter)
        aTextWriter.Write("Invalid file path characters are: ")
        aTextWriter.Write(Path.InvalidPathChars)
        aTextWriter.Write("."C)
    End Sub

    Shared Sub ReadText(aTextReader As TextReader)
        Console.WriteLine("From {0} - {1}", _
            aTextReader.GetType().Name, aTextReader.ReadToEnd())
    End Sub

End Class

[C#] 
using System;
using System.IO;

class TextRW
{
    static void Main()
    {
        TextWriter stringWriter = new StringWriter();
        using(TextWriter streamWriter = 
            new StreamWriter("InvalidPathChars.txt"))
        {
            WriteText(stringWriter);
            WriteText(streamWriter);
        }

        TextReader stringReader = 
            new StringReader(stringWriter.ToString());
        using(TextReader streamReader = 
            new StreamReader("InvalidPathChars.txt"))
        {
            ReadText(stringReader);
            ReadText(streamReader);
        }
    }

    static void WriteText(TextWriter textWriter)
    {
        textWriter.Write("Invalid file path characters are: ");
        textWriter.Write(Path.InvalidPathChars);
        textWriter.Write('.');
    }

    static void ReadText(TextReader textReader)
    {
        Console.WriteLine("From {0} - {1}", 
            textReader.GetType().Name, textReader.ReadToEnd());
    }
}

[C++] 
#using <mscorlib.dll>
using namespace System;
using namespace System::IO;

static void WriteText(TextWriter* textWriter)
{
    textWriter->Write("Invalid file path characters are: ");
    textWriter->Write(Path::InvalidPathChars);
    textWriter->Write(Char::Parse(S"."));
}

static void ReadText(TextReader* textReader)
{
    Console::WriteLine(S"From {0} - {1}", 
        textReader->GetType()->Name, textReader->ReadToEnd());
}

void main()
{
    TextWriter* stringWriter = new StringWriter(); 
    TextWriter* streamWriter = 
        new StreamWriter("InvalidPathChars.txt");

    WriteText(stringWriter);
    WriteText(streamWriter);
    streamWriter->Close();

    TextReader* stringReader = 
        new StringReader(stringWriter->ToString()); 
    TextReader* streamReader = 
        new StreamReader("InvalidPathChars.txt");

    ReadText(stringReader);
    ReadText(streamReader);
    streamReader->Close();
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.IO

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

アセンブリ: Mscorlib (Mscorlib.dll 内)

参照

TextWriter メンバ | System.IO 名前空間 | 入出力操作 | ファイルからのテキストの読み取り | ファイルへのテキストの書き込み | 基本のファイル I/O | 新しく作成したデータ ファイルの読み取りと書き込み