스트림 작성Compose streams

백업 저장소(backing store)는 디스크 또는 메모리와 같은 스토리지 매체입니다.A backing store is a storage medium, such as a disk or memory. 다양한 각 백업 저장소는 Stream 클래스의 구현으로 고유한 스트림을 구현합니다.Each different backing store implements its own stream as an implementation of the Stream class.

각 스트림 유형은 지정된 백업 저장소에 유입 또는 유출되는 바이트를 읽고 씁니다.Each stream type reads and writes bytes from and to its given backing store. 백업 저장소에 연결되는 스트림을 기본 스트림(base stream)이라고 합니다.Streams that connect to backing stores are called base streams. 기본 스트림에는 스트림을 백업 저장소에 연결하는 데 필요한 매개 변수가 포함된 생성자가 있습니다.Base streams have constructors with the parameters necessary to connect the stream to the backing store. 예를 들어 FileStream에는 프로세스가 경로 매개 변수를 지정하는 생성자가 있으며, 이것은 프로세스가 파일을 공유하는 방법을 지정합니다.For example, FileStream has constructors that specify a path parameter, which specifies how the file will be shared by processes.

System.IO 클래스 디자인은 간소화된 스트림 컴퍼지션을 제공합니다.The design of the System.IO classes provides simplified stream composition. 원하는 기능을 제공하는 하나 이상의 통과 스트림에 기본 스트림을 연결할 수 있습니다.You can attach base streams to one or more pass-through streams that provide the functionality you want. 체인 끝에 reader 또는 writer를 연결할 수 있기 때문에 기본 형식을 쉽게 읽거나 쓸 수 있습니다.You can attach a reader or writer to the end of the chain, so the preferred types can be read or written easily.

다음 코드 예제에서는 MyFile.txt를 버퍼링하기 위해 기존 MyFile.txt를 바탕으로 FileStream을 만듭니다.The following code examples create a FileStream around the existing MyFile.txt in order to buffer MyFile.txt. FileStream은 기본적으로 버퍼링됩니다.Note that FileStreams are buffered by default.

중요

예제에서는 MyFile.txt 파일이 앱과 동일한 폴더에 이미 존재한다고 가정합니다.The examples assume that a file named MyFile.txt already exists in the same folder as the app.

예: StreamReader 사용Example: Use StreamReader

다음 예제에서는 생성자 인수로 StreamReader에 전달되는 FileStream에서 문자를 읽는 StreamReader를 만듭니다.The following example creates a StreamReader to read characters from the FileStream, which is passed to the StreamReader as its constructor argument. StreamReader.ReadLineStreamReader.Peek에서 더 이상 문자를 찾지 못할 때까지 읽습니다.StreamReader.ReadLine then reads until StreamReader.Peek finds no more characters.

using System;
using System.IO;

public class CompBuf
{
    private const string FILE_NAME = "MyFile.txt";

    public static void Main()
    {
        if (!File.Exists(FILE_NAME))
        {
            Console.WriteLine($"{FILE_NAME} does not exist!");
            return;
        }
        FileStream fsIn = new FileStream(FILE_NAME, FileMode.Open,
            FileAccess.Read, FileShare.Read);
        // Create an instance of StreamReader that can read
        // characters from the FileStream.
        using (StreamReader sr = new StreamReader(fsIn))
        {
            string input;
            // While not at the end of the file, read lines from the file.
            while (sr.Peek() > -1)
            {
                input = sr.ReadLine();
                Console.WriteLine(input);
            }
        }
    }
}
Imports System.IO

Public Class CompBuf
    Private Const FILE_NAME As String = "MyFile.txt"

    Public Shared Sub Main()
        If Not File.Exists(FILE_NAME) Then
            Console.WriteLine($"{FILE_NAME} does not exist!")
            Return
        End If
        Dim fsIn As new FileStream(FILE_NAME, FileMode.Open, _
            FileAccess.Read, FileShare.Read)
        ' Create an instance of StreamReader that can read
        ' characters from the FileStream.
        Using sr As New StreamReader(fsIn)
            Dim input As String
            ' While not at the end of the file, read lines from the file.
            While sr.Peek() > -1
                input = sr.ReadLine()
                Console.WriteLine(input)
            End While
        End Using
    End Sub
End Class

예: BinaryReader 사용Example: Use BinaryReader

다음 예제에서는 생성자 인수로 BinaryReader에 전달되는 FileStream에서 바이트를 읽는 BinaryReader를 만듭니다.The following example creates a BinaryReader to read bytes from the FileStream, which is passed to the BinaryReader as its constructor argument. ReadBytePeekChar에서 더 이상 바이트를 찾지 못할 때까지 읽습니다.ReadByte then reads until PeekChar finds no more bytes.

using System;
using System.IO;

public class ReadBuf
{
    private const string FILE_NAME = "MyFile.txt";

    public static void Main()
    {
        if (!File.Exists(FILE_NAME))
        {
            Console.WriteLine($"{FILE_NAME} does not exist.");
            return;
        }
        FileStream f = new FileStream(FILE_NAME, FileMode.Open,
            FileAccess.Read, FileShare.Read);
        // Create an instance of BinaryReader that can
        // read bytes from the FileStream.
        using (BinaryReader br = new BinaryReader(f))
        {
            byte input;
            // While not at the end of the file, read lines from the file.
            while (br.PeekChar() > -1 )
            {
                input = br.ReadByte();
                Console.WriteLine(input);
            }
        }
    }
}
Imports System.IO

Public Class ReadBuf
    Private Const FILE_NAME As String = "MyFile.txt"

    Public Shared Sub Main()
        If Not File.Exists(FILE_NAME) Then
            Console.WriteLine($"{FILE_NAME} does not exist.")
            Return
        End If
        Dim f As New FileStream(FILE_NAME, FileMode.Open, _
            FileAccess.Read, FileShare.Read)
        ' Create an instance of BinaryReader that can
        ' read bytes from the FileStream.
        Using br As new BinaryReader(f)
            Dim input As Byte
            ' While not at the end of the file, read lines from the file.
            While br.PeekChar() > -1
                input = br.ReadByte()
                Console.WriteLine (input)
            End While
        End Using
    End Sub
End Class

참조See also