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. 직접 형식의 dispose 호출 해당 Dispose 의 메서드를 try/catch 블록입니다.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. U t F-8에서 유니코드 문자를 올바르게 처리 하 고 운영 체제의 언어 버전에서 일관 된 결과 제공 합니다.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. 이는 count 매개 변수에 지정 된 바이트 수를 읽고 쓰는 BufferedStream.ReadBufferedStream.Write에서 구분 됩니다.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()

입력 스트림에서 다음 문자를 읽고 문자 위치를 한 문자씩 앞으로 이동합니다.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()

현재 스트림에서 한 줄의 문자를 읽고 데이터를 문자열로 반환합니다.Reads a line of characters from the current stream and returns the data as a string.

ReadLineAsync()

현재 스트림에서 한 줄의 문자를 비동기적으로 읽고 데이터를 문자열로 반환합니다.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()

현재 위치부터 스트림 끝까지의 모든 문자를 비동기적으로 읽어서 이를 하나의 문자열로 반환합니다.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)

적용 대상

추가 정보