StreamReader クラス

定義

特定のエンコーディングのバイト ストリームから文字を読み込む TextReader を実装します。Implements a TextReader that reads characters from a byte stream in a particular encoding.

public ref class StreamReader : System::IO::TextReader
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class StreamReader : System.IO.TextReader
type StreamReader = class
    inherit TextReader
Public Class StreamReader
Inherits TextReader
継承
属性

次の例では、StreamReader のインスタンスを使用して、ファイルからテキストを読み取ります。The following example uses an instance of StreamReader to read text from a file. この例で使用するコンストラクターは、Windows ストアWindows Store アプリでの使用はサポートされていません。The constructor used in this example is not supported for use in Windows ストアWindows Store Apps.

using namespace System;
using namespace System::IO;
int main()
{
   try
   {
      // Create an instance of StreamReader to read from a file.
      StreamReader^ sr = gcnew StreamReader( "TestFile.txt" );
      try
      {
         String^ line;
         
         // Read and display lines from the file until the end of 
         // the file is reached.
         while ( line = sr->ReadLine() )
         {
            Console::WriteLine( line );
         }
      }
      finally
      {
         if ( sr )
            delete (IDisposable^)sr;
      }
   }
   catch ( Exception^ e ) 
   {
      // Let the user know what went wrong.
      Console::WriteLine( "The file could not be read:" );
      Console::WriteLine( e->Message );
   }
}
using System;
using System.IO;

class Test 
{
    public static void Main() 
    {
        try 
        {
            // Create an instance of StreamReader to read from a file.
            // The using statement also closes the StreamReader.
            using (StreamReader sr = new StreamReader("TestFile.txt")) 
            {
                string line;
                // Read and display lines from the file until the end of 
                // the file is reached.
                while ((line = sr.ReadLine()) != null) 
                {
                    Console.WriteLine(line);
                }
            }
        }
        catch (Exception e) 
        {
            // Let the user know what went wrong.
            Console.WriteLine("The file could not be read:");
            Console.WriteLine(e.Message);
        }
    }
}
Imports System.IO

Class Test
    Public Shared Sub Main()
        Try
            ' Create an instance of StreamReader to read from a file.
            Dim sr As StreamReader = New StreamReader("TestFile.txt")
            Dim line As String
            ' Read and display the lines from the file until the end 
            ' of the file is reached.
            Do
                line = sr.ReadLine()
                Console.WriteLine(Line)
            Loop Until line Is Nothing
            sr.Close()
        Catch E As Exception
            ' Let the user know what went wrong.
            Console.WriteLine("The file could not be read:")
            Console.WriteLine(E.Message)
        End Try
    End Sub
End Class

次の例では、StreamReader オブジェクトをインスタンス化し、その ReadAsync メソッドを呼び出してファイルを非同期的に読み取ります。The following example instantiates a StreamReader object and calls its ReadAsync method to read a file asynchronously.

using System;
using System.IO;
using System.Threading.Tasks;

class Example
{
    static async Task Main()
    {
        await ReadAndDisplayFilesAsync();
    }

    static async Task ReadAndDisplayFilesAsync()
    {
        String filename = "TestFile1.txt";
        Char[] buffer;
        
        using (var sr = new StreamReader(filename)) {
            buffer = new Char[(int)sr.BaseStream.Length];
            await sr.ReadAsync(buffer, 0, (int)sr.BaseStream.Length);
        }

        Console.WriteLine(new String(buffer));
    }
}
// The example displays the following output:
//       This is the first line of text in a relatively short file.
//       This is the second line.
//       This is the third line.
//       This is the fourth and final line.
Imports System.IO
Imports System.Threading.Tasks

Module Example
    Public Sub Main()
        ReadAndDisplayFilesAsync()
    End Sub

    Private Async Sub ReadAndDisplayFilesAsync()
        Dim filename As String = "TestFile1.txt"
        Dim buffer() As Char
        
        Using sr As New StreamReader(filename)
            ReDim buffer(CInt(sr.BaseStream.Length))
            Await sr.ReadAsync(buffer, 0, CInt(sr.BaseStream.Length))
        End Using

        Console.WriteLine(New String(buffer))
    End Sub
End Module
' The example displays the following output:
'       This is the first line of text in a relatively short file.
'       This is the second line.
'       This is the third line.
'       This is the fourth and final line.

注釈

StreamReader は、特定のエンコーディングでの文字入力用に設計されています。一方、Stream クラスは、バイト入出力用に設計されています。StreamReader is designed for character input in a particular encoding, whereas the Stream class is designed for byte input and output. 標準のテキストファイルから情報の行を読み取るには、StreamReader を使用します。Use StreamReader for reading lines of information from a standard text file.

重要

この型は IDisposable インターフェイスを実装します。This type implements the IDisposable interface. 型の使用が完了したら、直接的または間接的に型を破棄する必要があります。When you have finished using the type, you should dispose of it either directly or indirectly. 直接的に型を破棄するには、try / catch ブロック内で Dispose メソッドを呼び出します。To dispose of the type directly, call its Dispose method in a try/catch block. 間接的に型を破棄するには、using (C# の場合) または Using (Visual Basic 言語) などの言語構成要素を使用します。To dispose of it indirectly, use a language construct such as using (in C#) or Using (in Visual Basic). 詳細については、IDisposable インターフェイスに関するトピック内の「IDisposable を実装するオブジェクトの使用」セクションを参照してください。For more information, see the "Using an Object that Implements IDisposable" section in the IDisposable interface topic.

既定では、現在のシステムの ANSI コードページを既定で使用するのではなく、特に指定しない限り、UTF-8 エンコードが既定値に StreamReader ます。StreamReader defaults to UTF-8 encoding unless specified otherwise, instead of defaulting to the ANSI code page for the current system. UTF-8 は Unicode 文字を正しく処理し、オペレーティングシステムのローカライズされたバージョンで一貫性のある結果を提供します。UTF-8 handles Unicode characters correctly and provides consistent results on localized versions of the operating system. CurrentEncoding プロパティを使用して現在の文字エンコーディングを取得した場合、最初の Read メソッドの後まで、値は信頼できません。これは、Read メソッドへの最初の呼び出しまでエンコード自動検出が実行されないためです。If you get the current character encoding using the CurrentEncoding property, the value is not reliable until after the first Read method, since encoding auto detection is not done until the first call to a Read method.

既定では、StreamReader はスレッドセーフではありません。By default, a StreamReader is not thread safe. スレッドセーフラッパーについては、「TextReader.Synchronized」を参照してください。See TextReader.Synchronized for a thread-safe wrapper.

Read(Char[], Int32, Int32) および Write(Char[], Int32, Int32) メソッドオーバーロードは、count パラメーターで指定された文字数の読み取りと書き込みを行います。The Read(Char[], Int32, Int32) and Write(Char[], Int32, Int32) method overloads read and write the number of characters specified by the count parameter. これらは、BufferedStream.ReadBufferedStream.Writeと区別され、count パラメーターで指定されたバイト数の読み取りと書き込みを行います。These are to be distinguished from BufferedStream.Read and BufferedStream.Write, which read and write the number of bytes specified by the count parameter. BufferedStream メソッドは、整数のバイト配列要素の読み取りと書き込みにのみ使用します。Use the BufferedStream methods only for reading and writing an integral number of byte array elements.

注意

Streamから読み取る場合は、ストリームの内部バッファーと同じサイズのバッファーを使用する方が効率的です。When reading from a Stream, it is more efficient to use a buffer that is the same size as the internal buffer of the stream.

共通 I/O タスクの一覧は、 共通 I/O タスク を参照してください。For a list of common I/O tasks, see Common I/O Tasks.

コンストラクター

StreamReader(Stream)

指定したストリーム用の StreamReader クラスの新しいインスタンスを初期化します。Initializes a new instance of the StreamReader class for the specified stream.

StreamReader(Stream, Boolean)

バイト順マーク検出オプションを設定して、指定したストリーム用の StreamReader クラスの新しいインスタンスを初期化します。Initializes a new instance of the StreamReader class for the specified stream, with the specified byte order mark detection option.

StreamReader(Stream, Encoding)

文字エンコーディングを設定して、指定したストリーム用の StreamReader クラスの新しいインスタンスを初期化します。Initializes a new instance of the StreamReader class for the specified stream, with the specified character encoding.

StreamReader(Stream, Encoding, Boolean)

文字エンコーディングとバイト順マーク検出オプションを設定して、指定したストリーム用の StreamReader クラスの新しいインスタンスを初期化します。Initializes a new instance of the StreamReader class for the specified stream, with the specified character encoding and byte order mark detection option.

StreamReader(Stream, Encoding, Boolean, Int32)

文字エンコーディング、バイト順マーク検出オプション、およびバッファー サイズを設定して、指定したストリーム用の StreamReader クラスの新しいインスタンスを初期化します。Initializes a new instance of the StreamReader class for the specified stream, with the specified character encoding, byte order mark detection option, and buffer size.

StreamReader(Stream, Encoding, Boolean, Int32, Boolean)

指定した文字エンコーディング、バイト順マーク検出オプション、およびバッファー サイズに基づいて、指定したストリーム用の StreamReader クラスの新しいインスタンスを初期化し、必要に応じて、ストリームを開いたままにします。Initializes a new instance of the StreamReader class for the specified stream based on the specified character encoding, byte order mark detection option, and buffer size, and optionally leaves the stream open.

StreamReader(String)

指定したファイル名用の StreamReader クラスの新しいインスタンスを初期化します。Initializes a new instance of the StreamReader class for the specified file name.

StreamReader(String, Boolean)

指定したバイト オーダー マーク検出オプションを使用して、指定したファイル名用の StreamReader クラスの新しいインスタンスを初期化します。Initializes a new instance of the StreamReader class for the specified file name, with the specified byte order mark detection option.

StreamReader(String, Encoding)

文字エンコーディングを設定して、指定したファイル名用の StreamReader クラスの新しいインスタンスを初期化します。Initializes a new instance of the StreamReader class for the specified file name, with the specified character encoding.

StreamReader(String, Encoding, Boolean)

文字エンコーディングとバイト順マーク検出オプションを設定して、指定したファイル名用の StreamReader クラスの新しいインスタンスを初期化します。Initializes a new instance of the StreamReader class for the specified file name, with the specified character encoding and byte order mark detection option.

StreamReader(String, Encoding, Boolean, Int32)

文字エンコーディング、バイト順マーク検出オプション、およびバッファー サイズを設定して、指定したファイル名の StreamReader クラスの新しいインスタンスを初期化します。Initializes a new instance of the StreamReader class for the specified file name, with the specified character encoding, byte order mark detection option, and buffer size.

フィールド

Null

空のストリームの StreamReader オブジェクト。A StreamReader object around an empty stream.

プロパティ

BaseStream

基になるストリームを返します。Returns the underlying stream.

CurrentEncoding

現在の StreamReader オブジェクトが使用している現在の文字エンコーディングを取得します。Gets the current character encoding that the current StreamReader object is using.

EndOfStream

現在のストリームの位置がストリームの末尾かどうかを示す値を取得します。Gets a value that indicates whether the current stream position is at the end of the stream.

メソッド

Close()

StreamReader オブジェクトと、その基になるストリームを閉じ、リーダーに関連付けられたすべてのシステム リソースを解放します。Closes the StreamReader object and the underlying stream, and releases any system resources associated with the reader.

CreateObjRef(Type)

リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(継承元 MarshalByRefObject)
DiscardBufferedData()

内部バッファーをクリアします。Clears the internal buffer.

Dispose()

この TextReader オブジェクトによって使用されているすべてのリソースを解放します。Releases all resources used by the TextReader object.

(継承元 TextReader)
Dispose(Boolean)

基になるストリームを閉じ、StreamReader によって使用されているアンマネージド リソースを解放します。任意でマネージド リソースも解放します。Closes the underlying stream, releases the unmanaged resources used by the StreamReader, and optionally releases the managed resources.

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判定します。Determines whether the specified object is equal to the current object.

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(継承元 Object)
GetLifetimeService()

対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(継承元 MarshalByRefObject)
GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)
InitializeLifetimeService()

このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。Obtains a lifetime service object to control the lifetime policy for this instance.

(継承元 MarshalByRefObject)
MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
MemberwiseClone(Boolean)

現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。Creates a shallow copy of the current MarshalByRefObject object.

(継承元 MarshalByRefObject)
Peek()

読み取り可能な次の文字を返しますが、その文字は使用されません。Returns the next available character but does not consume it.

Read()

入力ストリームから次の文字を読み込み、1 文字分だけ文字位置を進めます。Reads the next character from the input stream and advances the character position by one character.

Read(Char[], Int32, Int32)

指定したインデックスを開始位置として、現在のストリームから、指定された最大文字数をバッファー内に読み取ります。Reads a specified maximum of characters from the current stream into a buffer, beginning at the specified index.

Read(Span<Char>)

現在のストリームからスパンに文字を読み込みます。Reads the characters from the current stream into a span.

ReadAsync(Char[], Int32, Int32)

指定した最大文字数を現在のストリームから非同期的に読み取り、バッファーの指定したインデックス位置にそのデータを書き込みます。Reads a specified maximum number of characters from the current stream asynchronously and writes the data to a buffer, beginning at the specified index.

ReadAsync(Memory<Char>, CancellationToken)

現在のストリームからメモリ ブロックに文字を非同期に読み取ります。Asynchronously reads the characters from the current stream into a memory block.

ReadBlock(Char[], Int32, Int32)

指定した最大文字数を現在のストリームから読み取り、バッファーの指定したインデックス位置にそのデータを書き込みます。Reads a specified maximum number of characters from the current stream and writes the data to a buffer, beginning at the specified index.

ReadBlock(Span<Char>)

現在のストリームから文字を読み取り、データをバッファーに書き込みます。Reads the characters from the current stream and writes the data to a buffer.

ReadBlockAsync(Char[], Int32, Int32)

指定した最大文字数を現在のストリームから非同期的に読み取り、バッファーの指定したインデックス位置にそのデータを書き込みます。Reads a specified maximum number of characters from the current stream asynchronously and writes the data to a buffer, beginning at the specified index.

ReadBlockAsync(Memory<Char>, CancellationToken)

現在のストリームから非同期に文字を読み取り、データをバッファーに書き込みます。Asynchronously reads the characters from the current stream and writes the data to a buffer.

ReadLine()

現在のストリームから 1 行分の文字を読み取り、そのデータを文字列として返します。Reads a line of characters from the current stream and returns the data as a string.

ReadLineAsync()

現在のストリームから非同期的に 1 行分の文字を読み取り、そのデータを文字列として返します。Reads a line of characters asynchronously from the current stream and returns the data as a string.

ReadToEnd()

すべての文字の現在位置から末尾までを読み込みます。Reads all characters from the current position to the end of the stream.

ReadToEndAsync()

現在位置からストリームの末尾まですべての文字を非同期的に読み取り、1 つの文字列として返します。Reads all characters from the current position to the end of the stream asynchronously and returns them as one string.

ToString()

現在のオブジェクトを表す string を返します。Returns a string that represents the current object.

(継承元 Object)

明示的なインターフェイスの実装

IDisposable.Dispose()

このメンバーの詳細については、「Dispose()」をご覧ください。For a description of this member, see Dispose().

(継承元 TextReader)

適用対象

こちらもご覧ください