다음을 통해 공유


StreamReader 클래스

정의

TextReader 특정 인코딩의 바이트 스트림에서 문자를 읽는 메서드를 구현합니다.

public ref class StreamReader : System::IO::TextReader
public class StreamReader : System.IO.TextReader
[System.Serializable]
public class StreamReader : System.IO.TextReader
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class StreamReader : System.IO.TextReader
type StreamReader = class
    inherit TextReader
[<System.Serializable>]
type StreamReader = class
    inherit TextReader
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type StreamReader = class
    inherit TextReader
Public Class StreamReader
Inherits TextReader
상속
StreamReader
상속
특성

예제

다음 예제에서는 인스턴스 StreamReader 를 사용하여 파일에서 텍스트를 읽습니다. 이 예제에 사용된 생성자는 Windows 스토어 앱에서 사용할 수 없습니다.

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 호출하여 파일을 비동기적으로 읽습니다.

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 .

중요합니다

이 형식은 IDisposable 인터페이스를 구현합니다. 형식 사용을 마쳤으면 직접 또는 간접적으로 삭제해야 합니다. 형식을 직접 삭제하려면 Disposetry/ 블록에서 해당 catch 메서드를 호출합니다. 간접적으로 삭제하려면 using(C#) 또는 Using(Visual Basic)와 같은 언어 구문을 사용합니다. 자세한 내용은 인터페이스 항목의 "IDisposable을 구현하는 개체 사용" 섹션을 IDisposable 참조하세요.

StreamReader 은 현재 시스템의 ANSI 코드 페이지로 기본값을 지정하는 대신, 달리 지정하지 않는 한 UTF-8 인코딩으로 기본 설정됩니다. UTF-8은 유니코드 문자를 올바르게 처리하고 지역화된 운영 체제 버전에서 일관된 결과를 제공합니다. 속성을 사용하여 CurrentEncoding 현재 문자 인코딩을 가져오는 경우 메서드에 대한 첫 번째 호출 Read 까지 인코딩 자동 검색이 수행되지 않으므로 첫 번째 Read 메서드 이후까지 값이 신뢰할 수 없습니다.

기본적으로 스레드는 StreamReader 안전하지 않습니다. 스레드로부터 안전한 래퍼는 참조 TextReader.Synchronized 하세요.

Read(Char[], Int32, Int32)Write(Char[], Int32, Int32) 메서드 오버로드는 매개 변수에 지정된 count 문자 수를 읽고 씁니다. 매개 변수에서 지정 countBufferedStream.Read 바이트 수를 읽고 쓰는 구별되어야 BufferedStream.Write합니다. BufferedStream 바이트 배열 요소의 정수 값을 읽고 쓰는 경우에만 메서드를 사용합니다.

메모

스트림에서 Stream읽을 때 스트림의 내부 버퍼와 크기가 같은 버퍼를 사용하는 것이 더 효율적입니다.

일반적인 I/O 작업 목록은 일반적인 I/O 작업을 참조하세요.

생성자

Name Description
StreamReader(Stream, Boolean)

지정된 바이트 순서 표시 검색 옵션을 사용하여 지정된 스트림에 대한 클래스의 새 인스턴스 StreamReader 를 초기화합니다.

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

지정된 문자 인코딩, 바이트 순서 표시 검색 옵션 및 버퍼 크기에 따라 지정된 스트림에 대한 클래스의 StreamReader 새 인스턴스를 초기화하고 필요에 따라 스트림을 열어 둡니다.

StreamReader(Stream, Encoding, Boolean, Int32)

지정된 문자 인코딩, 바이트 순서 표시 검색 옵션 및 버퍼 크기를 사용하여 지정된 스트림에 대한 클래스의 StreamReader 새 인스턴스를 초기화합니다.

StreamReader(Stream, Encoding, Boolean)

지정된 문자 인코딩 및 바이트 순서 표시 검색 옵션을 사용하여 지정된 스트림에 대한 클래스의 StreamReader 새 인스턴스를 초기화합니다.

StreamReader(Stream, Encoding)

지정된 문자 인코딩을 사용하여 지정된 스트림에 대한 클래스의 StreamReader 새 인스턴스를 초기화합니다.

StreamReader(Stream)

지정된 스트림에 대한 클래스의 StreamReader 새 인스턴스를 초기화합니다.

StreamReader(String, Boolean)

지정된 바이트 순서 표시 검색 옵션을 사용하여 지정된 파일 이름에 대한 클래스의 새 인스턴스 StreamReader 를 초기화합니다.

StreamReader(String, Encoding, Boolean, FileStreamOptions)

지정된 문자 인코딩, 바이트 순서 표시 검색 옵션을 사용하여 지정된 파일 경로에 대한 클래스의 StreamReader 새 인스턴스를 초기화하고 지정된 개체로 구성합니다 FileStreamOptions .

StreamReader(String, Encoding, Boolean, Int32)

지정된 문자 인코딩, 바이트 순서 표시 검색 옵션 및 버퍼 크기를 사용하여 지정된 파일 이름에 대한 클래스의 StreamReader 새 인스턴스를 초기화합니다.

StreamReader(String, Encoding, Boolean)

지정된 문자 인코딩 및 바이트 순서 표시 검색 옵션을 사용하여 지정된 파일 이름에 대한 클래스의 StreamReader 새 인스턴스를 초기화합니다.

StreamReader(String, Encoding)

지정된 문자 인코딩을 사용하여 지정된 파일 이름에 대한 클래스의 새 인스턴스 StreamReader 를 초기화합니다.

StreamReader(String, FileStreamOptions)

기본 인코딩을 사용하여 지정된 파일 경로에 대한 클래스의 StreamReader 새 인스턴스를 초기화하여 파일 시작 부분에서 바이트 순서 표시를 검색하고 지정된 개체로 구성합니다 FileStreamOptions .

StreamReader(String)

지정된 파일 이름에 대한 클래스의 StreamReader 새 인스턴스를 초기화합니다.

필드

Name Description
Null

StreamReader 빈 스트림 주위의 개체입니다.

속성

Name Description
BaseStream

기본 스트림을 반환합니다.

CurrentEncoding

현재 개체에서 사용 중인 현재 StreamReader 문자 인코딩을 가져옵니다.

EndOfStream

현재 스트림 위치가 스트림의 끝에 있는지 여부를 나타내는 값을 가져옵니다.

메서드

Name Description
Close()

StreamReader 개체와 기본 스트림을 닫고 판독기와 연결된 시스템 리소스를 해제합니다.

CreateObjRef(Type)

원격 개체와 통신하는 데 사용되는 프록시를 생성하는 데 필요한 모든 관련 정보를 포함하는 개체를 만듭니다.

(다음에서 상속됨 MarshalByRefObject)
DiscardBufferedData()

내부 버퍼를 지웁니다.

Dispose()

개체에서 사용하는 모든 리소스를 해제합니다 TextReader .

(다음에서 상속됨 TextReader)
Dispose(Boolean)

기본 스트림을 닫고, 관리되지 않는 리소스를 StreamReader해제하고, 관리되는 리소스를 선택적으로 해제합니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 여부를 확인합니다.

(다음에서 상속됨 Object)
GetHashCode()

기본 해시 함수로 사용됩니다.

(다음에서 상속됨 Object)
GetLifetimeService()
사용되지 않음.

이 인스턴스의 수명 정책을 제어하는 현재 수명 서비스 개체를 검색합니다.

(다음에서 상속됨 MarshalByRefObject)
GetType()

현재 인스턴스의 Type 가져옵니다.

(다음에서 상속됨 Object)
InitializeLifetimeService()
사용되지 않음.

이 인스턴스의 수명 정책을 제어하는 수명 서비스 개체를 가져옵니다.

(다음에서 상속됨 MarshalByRefObject)
MemberwiseClone()

현재 Object단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
MemberwiseClone(Boolean)

현재 MarshalByRefObject 개체의 단순 복사본을 만듭니다.

(다음에서 상속됨 MarshalByRefObject)
Peek()

사용 가능한 다음 문자를 반환하지만 사용하지 않습니다.

Read()

입력 스트림에서 다음 문자를 읽고 문자 위치를 한 문자씩 이동합니다.

Read(Char[], Int32, Int32)

지정된 인덱스에서 시작하여 현재 스트림에서 버퍼로 지정된 최대 문자를 읽습니다.

Read(Span<Char>)

현재 스트림의 문자를 범위로 읽습니다.

ReadAsync(Char[], Int32, Int32)

현재 스트림에서 지정된 최대 문자 수를 비동기적으로 읽고 지정된 인덱스에서 시작하여 버퍼에 데이터를 씁니다.

ReadAsync(Memory<Char>, CancellationToken)

현재 스트림의 문자를 메모리 블록으로 비동기적으로 읽습니다.

ReadBlock(Char[], Int32, Int32)

현재 스트림에서 지정된 최대 문자 수를 읽고 지정된 인덱스에서 시작하여 버퍼에 데이터를 씁니다.

ReadBlock(Char[], Int32, Int32)

현재 텍스트 판독기에서 지정된 최대 문자 수를 읽고 지정된 인덱스에서 시작하여 버퍼에 데이터를 씁니다.

(다음에서 상속됨 TextReader)
ReadBlock(Span<Char>)

현재 스트림에서 문자를 읽고 버퍼에 데이터를 씁니다.

ReadBlockAsync(Char[], Int32, Int32)

현재 스트림에서 지정된 최대 문자 수를 비동기적으로 읽고 지정된 인덱스에서 시작하여 버퍼에 데이터를 씁니다.

ReadBlockAsync(Memory<Char>, CancellationToken)

현재 스트림에서 문자를 비동기적으로 읽고 버퍼에 데이터를 씁니다.

ReadLine()

현재 스트림에서 문자 줄을 읽고 데이터를 문자열로 반환합니다.

ReadLineAsync()

현재 스트림에서 문자 줄을 비동기적으로 읽고 데이터를 문자열로 반환합니다.

ReadLineAsync(CancellationToken)

현재 스트림에서 문자 줄을 비동기적으로 읽고 데이터를 문자열로 반환합니다.

ReadToEnd()

현재 위치에서 스트림의 끝까지 모든 문자를 읽습니다.

ReadToEndAsync()

현재 위치에서 스트림의 끝까지 모든 문자를 비동기적으로 읽고 하나의 문자열로 반환합니다.

ReadToEndAsync(CancellationToken)

현재 위치에서 스트림의 끝까지 모든 문자를 비동기적으로 읽고 하나의 문자열로 반환합니다.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

명시적 인터페이스 구현

Name Description
IDisposable.Dispose()

이 멤버에 대한 설명은 을 참조하세요 Dispose().

(다음에서 상속됨 TextReader)

적용 대상

추가 정보