次の方法で共有


StreamReader.ReadToEnd メソッド

ストリームの現在位置から末尾までを読み込みます。

Overrides Public Function ReadToEnd() As String
[C#]
public override string ReadToEnd();
[C++]
public: String* ReadToEnd();
[JScript]
public override function ReadToEnd() : String;

戻り値

ストリームの現在位置から末尾までのストリームの残り部分 (文字列)。現在の位置がストリームの末尾である場合は、空の文字列 ("") が返されます。

例外

例外の種類 条件
OutOfMemoryException 返される文字列用のバッファを割り当てるためにはメモリが不足しています。
IOException I/O エラーが発生しました。

解説

このメソッドは、 TextReader.ReadToEnd をオーバーライドします。

ReadToEnd は、ストリームの現在位置から末尾までのすべての入力を読み込む必要があるときに最適です。ストリームから読み込む文字数についてさらに制御が必要な場合は、一般により高いパフォーマンスが得られる Read(Char[], Int32, Int32) を使用してください。

ReadToEnd では、末尾に到達したことをストリームが認識することを前提としています。サーバーがデータ送信を要求されたときにデータだけを送信して接続を閉じない対話型プロトコルでは、 ReadToEnd によってブロックされたままになる場合があるため、使用しないでください。

Read メソッドを使用するときは、ストリームの内部バッファと同じサイズのバッファを使用すると効率的です。ストリームの生成時にバッファのサイズを指定しなかった場合は、既定値の 4 KB (4096 バイト) に設定されます。

現在のメソッドが OutOfMemoryException をスローした場合、基になる Stream 内のリーダーの位置は読み取ることができた文字数分だけ進みますが、既に内部 ReadLine バッファに読み取られた文字は破棄されます。ストリーム内のリーダーの位置は変更できないため、既に読み取られた文字は復元できません。もう一度アクセスするには、 StreamReader を再初期化する必要があります。ストリーム内の初期位置が不明であるか、ストリームがシークをサポートしない場合は、基になる Stream も再初期化する必要があります。

このような状況を回避し、信頼性の高いコードを作成するには、 Read メソッドを使用して、割り当て済みのバッファに読み取った文字を格納する必要があります。

このメソッドの使用例については、以下の「使用例」を参照してください。その他の一般的な I/O タスクまたは関連する I/O タスクの例を次の表に示します。

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

File.AppendText

FileInfo.AppendText

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

使用例

[Visual Basic, C#, C++] 1 回の操作でファイルの末尾まで読み取る例を次に示します。

 
Imports System
Imports System.IO
Imports System.Text

Public Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"

        Try
            If File.Exists(path) Then
                File.Delete(path)
            End If

            Dim sw As StreamWriter = New StreamWriter(path)
            sw.WriteLine("This")
            sw.WriteLine("is some text")
            sw.WriteLine("to test")
            sw.WriteLine("Reading")
            sw.Close()

            Dim sr As StreamReader = New StreamReader(path)

            'This allows you to do one Read operation.
            Console.WriteLine(sr.ReadToEnd())
            sr.Close()
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

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

class Test 
{
    
    public static void Main() 
    {
        string path = @"c:\temp\MyTest.txt";

        try 
        {
            if (File.Exists(path)) 
            {
                File.Delete(path);
            }

            using (StreamWriter sw = new StreamWriter(path)) 
            {
                sw.WriteLine("This");
                sw.WriteLine("is some text");
                sw.WriteLine("to test");
                sw.WriteLine("Reading");
            }

            using (StreamReader sr = new StreamReader(path)) 
            {
                //This allows you to do one Read operation.
                Console.WriteLine(sr.ReadToEnd());
            }
        } 
        catch (Exception e) 
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

[C++] 
#using <mscorlib.dll>

using namespace System;
using namespace System::IO;

int main() {
    String* path = S"c:\\temp\\MyTest.txt";

    try {
        if (File::Exists(path)) {
            File::Delete(path);
        }

        StreamWriter* sw = new StreamWriter(path);
        try {
            sw->WriteLine(S"This");
            sw->WriteLine(S"is some text");
            sw->WriteLine(S"to test");
            sw->WriteLine(S"Reading");
        } __finally {
            if (sw) __try_cast<IDisposable*>(sw)->Dispose();
        }

        StreamReader* sr = new StreamReader(path);
        try {
            //This allows you to do one Read operation.
            Console::WriteLine(sr->ReadToEnd());
        } __finally {
            if (sr) __try_cast<IDisposable*>(sr)->Dispose();
        }
    } catch (Exception* e) {
        Console::WriteLine(S"The process failed: {0}", e);
    }
}

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

必要条件

プラットフォーム: 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, Common Language Infrastructure (CLI) Standard

参照

StreamReader クラス | StreamReader メンバ | System.IO 名前空間 | 入出力操作 | ファイルからのテキストの読み取り | ファイルへのテキストの書き込み