다음을 통해 공유


Stream 클래스

바이트 시퀀스에 대한 일반 뷰를 제공합니다.

네임스페이스: System.IO
어셈블리: mscorlib(mscorlib.dll)

구문

‘선언
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public MustInherit Class Stream
    Inherits MarshalByRefObject
    Implements IDisposable
‘사용 방법
Dim instance As Stream
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public abstract class Stream : MarshalByRefObject, IDisposable
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public ref class Stream abstract : public MarshalByRefObject, IDisposable
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public abstract class Stream extends MarshalByRefObject implements IDisposable
SerializableAttribute 
ComVisibleAttribute(true) 
public abstract class Stream extends MarshalByRefObject implements IDisposable

설명

파일을 만들고 파일에 텍스트를 쓰는 방법에 대한 예제를 보려면 방법: 파일에 텍스트 쓰기를 참조하십시오. 파일에서 텍스트를 읽는 방법에 대한 예제를 보려면 방법: 파일의 텍스트 읽기를 참조하십시오. 이진 파일을 읽거나 쓰는 방법에 대한 예제를 보려면 방법: 새로 만든 데이터 파일 읽기 및 쓰기를 참조하십시오.

스트림에는 다음의 세 가지 기본 작업이 포함됩니다.

  1. 스트림에서 읽을 수 있습니다. 읽기는 스트림에서 데이터 구조체(예: 바이트 배열)로 데이터를 전송하는 과정입니다.

  2. 스트림에 쓸 수 있습니다. 쓰기는 데이터 구조체에서 스트림으로 데이터를 전송하는 과정입니다.

  3. 스트림에서는 검색을 지원할 수 있습니다. 검색은 스트림 내에서 현재 위치를 쿼리하고 수정하는 과정입니다. 검색 기능은 스트림에 있는 백업 저장소의 종류에 따라 다릅니다. 예를 들어, 네트워크 스트림에는 현재 위치의 통합 개념이 없으므로 일반적으로 검색을 지원하지 않습니다.

Stream은 모든 스트림의 추상 기본 클래스입니다. 스트림은 파일, 입력/출력 장치, 프로세스 간 통신 파이프 또는 TCP/IP 소켓과 같은 바이트 시퀀스를 추상적으로 나타낸 것입니다. Stream 클래스와 해당 파생 클래스는 이러한 다른 형식의 입력 및 출력에 대한 일반 뷰를 제공하여 프로그래머를 운영 체제와 내부 장치의 세부 사항으로부터 격리시킵니다.

내부 데이터 소스 또는 리포지토리에 따라 스트림에서는 이러한 기능 중 일부만을 지원할 수도 있습니다. 응용 프로그램에서 CanRead, CanWriteCanSeek 속성을 사용하여 해당 기능에 대한 스트림을 쿼리할 수 있습니다.

ReadWrite 메서드는 다양한 형식의 데이터를 읽고 씁니다. 검색을 지원하는 스트림의 경우 SeekSetLength 메서드와 PositionLength 속성을 사용하여 스트림의 현재 위치와 길이를 쿼리하고 수정합니다.

일부 스트림을 구현하면 내부 데이터에 대한 로컬 버퍼링이 실행되어 성능이 향상됩니다. 이러한 스트림에서는 Flush 메서드를 사용하여 내부 버퍼를 모두 지우고 모든 데이터가 내부 데이터 소스 또는 리포지토리에 쓰여졌는지 확인할 수 있습니다.

Stream에서 Close를 호출하면 Flush가 호출되면서 버퍼링된 모든 데이터가 플러시됩니다. 또한 Close는 파일 핸들, 네트워크 연결, 내부 버퍼링에 사용된 메모리 등과 같은 운영 체제 리소스를 해제합니다. BufferedStream 클래스는 읽기 및 쓰기 성능을 향상시키기 위해 버퍼링된 스트림으로 다른 스트림을 래핑하는 기능을 제공합니다.

백업 저장소(비트 버킷)가 없는 스트림이 필요한 경우 Null을 사용합니다.

구현자 참고 사항 Stream의 파생 클래스를 구현할 때 ReadWrite 메서드를 구현해야 합니다. 비동기 메서드 BeginRead, EndRead, BeginWrite, EndWrite는 동기 메서드 ReadWrite를 통해 구현됩니다. 마찬가지로 ReadWrite의 구현은 비동기화 메서드에서 제대로 작동합니다. ReadByteWriteByte를 구현하면 기본적으로 새로운 단일 요소의 바이트 배열을 만든 다음 동기 ReadWrite의 구현을 호출합니다. Stream에서 파생할 때 내부 바이트 버퍼가 있는 경우 성능을 향상시키려면 이러한 메서드를 재정의하여 내부 버퍼에 액세스하는 것이 좋습니다. 또한 CanRead, CanSeek, CanWrite, Flush, Length, Position, SeekSetLength를 구현해야 합니다. Close 메서드를 재정의하는 대신 모든 스트림 정리 논리를 Dispose 메서드에 포함하십시오. 자세한 내용은 Dispose 메서드 구현을 참조하십시오.

항목 위치
방법: 파일에 텍스트 쓰기 .NET Framework: Programming Fundamentals
방법: 파일의 텍스트 읽기 .NET Framework: Programming Fundamentals
방법: 파일에 텍스트 쓰기 .NET Framework: 프로그래밍 기본 사항
방법: 파일의 텍스트 읽기 .NET Framework: 프로그래밍 기본 사항

상속 계층 구조

System.Object
   System.MarshalByRefObject
    System.IO.Stream
       파생 클래스

스레드로부터의 안전성

이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

Stream 멤버
System.IO 네임스페이스
FileStream 클래스
MemoryStream 클래스
BufferedStream 클래스

기타 리소스

파일 및 스트림 I/O
방법: 파일의 텍스트 읽기
방법: 파일에 텍스트 쓰기