이 문서는 기계 번역을 이용하여 번역되었습니다. 문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

Stream 클래스

 

게시 날짜: 2016년 11월

바이트 시퀀스에 대한 일반 뷰를 제공합니다. 이 클래스는 추상 클래스입니다.

이 형식에 대한 .NET Framework 소스 코드를 찾아보려면 참조 원본을 참조하세요.

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


[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class Stream : MarshalByRefObject, IDisposable

이름설명
System_CAPS_protmethodStream()

Stream 클래스의 새 인스턴스를 초기화합니다.

이름설명
System_CAPS_pubpropertyCanRead

파생 클래스에서 재정의되면 현재 스트림이 읽기를 지원하는지를 나타내는 값을 가져옵니다.

System_CAPS_pubpropertyCanSeek

파생 클래스에서 재정의되면 현재 스트림이 검색을 지원하는지를 나타내는 값을 가져옵니다.

System_CAPS_pubpropertyCanTimeout

현재 스트림이 시간 초과될 수 있는지를 결정하는 값을 가져옵니다.

System_CAPS_pubpropertyCanWrite

파생 클래스에서 재정의되면 현재 스트림이 쓰기를 지원하는지를 나타내는 값을 가져옵니다.

System_CAPS_pubpropertyLength

파생 클래스에서 재정의되면 스트림 바이트의 길이를 가져옵니다.

System_CAPS_pubpropertyPosition

파생 클래스에서 재정의되면 현재 스트림 내의 위치를 가져오거나 설정합니다.

System_CAPS_pubpropertyReadTimeout

스트림이 시간 초과 전 읽기를 시도할 기간을 결정하는 값(밀리초)을 가져오거나 설정합니다.

System_CAPS_pubpropertyWriteTimeout

스트림이 시간 초과 전 쓰기를 시도할 기간을 결정하는 값(밀리초)을 가져오거나 설정합니다.

이름설명
System_CAPS_pubmethodBeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

비동기 읽기 작업을 시작합니다. ReadAsync를 대신 사용하는 것이 좋습니다. 설명 섹션을 참조하세요.

System_CAPS_pubmethodBeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

비동기 쓰기 작업을 시작합니다. WriteAsync를 대신 사용하는 것이 좋습니다. 설명 섹션을 참조하세요.

System_CAPS_pubmethodClose()

현재 스트림을 닫고 현재 스트림과 관련된 소켓과 파일 핸들 등의 리소스를 모두 해제합니다. 이 메서드를 호출하는 대신 스트림이 올바르게 삭제되었는지 확인합니다.

System_CAPS_pubmethodCopyTo(Stream)

현재 스트림에서 바이트를 읽어서 다른 스트림에 해당 바이트를 씁니다.

System_CAPS_pubmethodCopyTo(Stream, Int32)

현재 스트림에서 바이트를 읽어서 지정된 버퍼 크기로 다른 스트림에 씁니다.

System_CAPS_pubmethodCopyToAsync(Stream)

현재 스트림에서 모든 바이트를 비동기적으로 읽어 다른 스트림에 씁니다.

System_CAPS_pubmethodCopyToAsync(Stream, Int32)

현재 스트림에서 바이트를 비동기적으로 읽어 지정된 버퍼 크기로 다른 스트림에 씁니다.

System_CAPS_pubmethodCopyToAsync(Stream, Int32, CancellationToken)

현재 스트림에서 바이트를 비동기적으로 읽어 지정된 버퍼 크기 및 취소 토큰을 사용하여 다른 스트림에 씁니다.

System_CAPS_pubmethodCreateObjRef(Type)

원격 개체와 통신 하는 데 사용 하 여 프록시를 생성 하는 데 필요한 모든 관련 정보를 포함 하는 개체를 만듭니다.(MarshalByRefObject에서 상속됨)

System_CAPS_protmethodCreateWaitHandle()

사용되지 않습니다. WaitHandle 개체를 할당합니다.

System_CAPS_pubmethodDispose()

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

System_CAPS_protmethodDispose(Boolean)

Stream에서 사용하는 관리되지 않는 리소스를 해제하고, 관리되는 리소스를 선택적으로 해제할 수 있습니다.

System_CAPS_pubmethodEndRead(IAsyncResult)

보류 중인 비동기 읽기가 완료되기를 기다립니다. ReadAsync를 대신 사용하는 것이 좋습니다. 설명 섹션을 참조하세요.

System_CAPS_pubmethodEndWrite(IAsyncResult)

비동기 쓰기 작업을 끝냅니다. WriteAsync를 대신 사용하는 것이 좋습니다. 설명 섹션을 참조하세요.

System_CAPS_pubmethodEquals(Object)

지정한 개체가 현재 개체와 같은지 여부를 확인합니다. (Object에서 상속됨)

System_CAPS_protmethodFinalize()

개체가 가비지 수집자에서 회수되기 전에, 해당 개체에서 리소스를 해제하고 다른 정리 작업을 수행할 수 있게 합니다. (Object에서 상속됨)

System_CAPS_pubmethodFlush()

파생 클래스에서 재정의되면 이 스트림에 대해 모든 버퍼를 지우고 버퍼링된 데이터가 내부 장치에 쓰여지도록 합니다.

System_CAPS_pubmethodFlushAsync()

이 스트림에 대한 모든 버퍼를 비동기적으로 지우고 버퍼링된 모든 데이터가 내부 장치에 비동기적으로 쓰여지도록 합니다.

System_CAPS_pubmethodFlushAsync(CancellationToken)

이 스트림에 대해 모든 버퍼를 비동기적으로 지우고 버퍼링된 데이터가 내부 장치에 쓰여지도록 하고 취소 요청을 모니터링합니다.

System_CAPS_pubmethodGetHashCode()

기본 해시 함수로 작동합니다.(Object에서 상속됨)

System_CAPS_pubmethodGetLifetimeService()

이 인스턴스에 대 한 수명 정책을 제어 하는 현재 수명 서비스 개체를 검색 합니다.(MarshalByRefObject에서 상속됨)

System_CAPS_pubmethodGetType()

현재 인스턴스의 Type을 가져옵니다.(Object에서 상속됨)

System_CAPS_pubmethodInitializeLifetimeService()

이 인스턴스에 대 한 수명 정책을 제어 하는 수명 서비스 개체를 가져옵니다.(MarshalByRefObject에서 상속됨)

System_CAPS_protmethodMemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.(Object에서 상속됨)

System_CAPS_protmethodMemberwiseClone(Boolean)

현재의 단순 복사본을 만듭니다 MarshalByRefObject 개체입니다.(MarshalByRefObject에서 상속됨)

System_CAPS_protmethodObjectInvariant()

사용되지 않습니다. 이 API는 제품 인프라를 지원하며 코드에서 직접 사용할 수 없습니다. Contract에 대한 지원을 제공합니다.

System_CAPS_pubmethodRead(Byte[], Int32, Int32)

파생 클래스에서 재정의되면 현재 스트림에서 바이트의 시퀀스를 읽고, 읽은 바이트 수만큼 스트림 내에서 앞으로 이동합니다.

System_CAPS_pubmethodReadAsync(Byte[], Int32, Int32)

현재 스트림에서 바이트 시퀀스를 읽고 읽은 바이트 수만큼 스트림에서 위치를 비동기적으로 앞으로 이동합니다.

System_CAPS_pubmethodReadAsync(Byte[], Int32, Int32, CancellationToken)

현재 스트림에서 바이트의 시퀀스를 비동기적으로 읽고 읽은 바이트 수만큼 스트림 내에서 앞으로 이동하며 취소 요청을 모니터링합니다.

System_CAPS_pubmethodReadByte()

스트림에서 바이트를 읽고 스트림 내 위치를 한 바이트씩 앞으로 이동하거나 스트림 끝일 경우 -1을 반환합니다.

System_CAPS_pubmethodSeek(Int64, SeekOrigin)

파생 클래스를 재정의될 때 현재 스트림 내의 위치를 설정합니다.

System_CAPS_pubmethodSetLength(Int64)

파생 클래스에 재정의될 때 현재 스트림의 길이를 설정합니다.

System_CAPS_pubmethodSystem_CAPS_staticSynchronized(Stream)

지정된 Stream 개체에 대해 동기화되어 스레드로부터 안전한 래퍼를 만듭니다.

System_CAPS_pubmethodToString()

현재 개체를 나타내는 문자열을 반환합니다.(Object에서 상속됨)

System_CAPS_pubmethodWrite(Byte[], Int32, Int32)

파생 클래스를 재정의될 때 현재 스트림에 바이트의 시퀀스를 쓰고 쓰여진 바이트 수만큼 이 스트림 내에서 앞으로 이동합니다.

System_CAPS_pubmethodWriteAsync(Byte[], Int32, Int32)

현재 스트림에 바이트 시퀀스를 비동기적으로 쓰고 쓴 바이트 수만큼 이 스트림에서 현재 위치를 앞으로 이동합니다.

System_CAPS_pubmethodWriteAsync(Byte[], Int32, Int32, CancellationToken)

바이트의 시퀀스를 현재 스트림에 비동기적으로 쓰고 쓰여진 바이트 수만큼 이 스트림 내의 현재 위치를 앞으로 이동한 후 취소 요청을 모니터링합니다.

System_CAPS_pubmethodWriteByte(Byte)

스트림의 현재 위치에 바이트를 쓰고 스트림 내 위치를 1바이트씩 앞으로 이동합니다.

이름설명
System_CAPS_pubfieldSystem_CAPS_staticNull

백업 저장소가 없는 Stream입니다.

System_CAPS_note참고

To view the .NET Framework source code for this type, see the Reference Sourcehttp://referencesource.microsoft.com/#mscorlib/system/io/stream.cs#f956b0c07e86df64. You can browse through the source code online, download the reference for offline viewing, and step through the sources (including patches and updates) during debugging; see instructionshttp://referencesource.microsoft.com/.

Stream is the abstract base class of all streams. A stream is an abstraction of a sequence of bytes, such as a file, an input/output device, an inter-process communication pipe, or a TCP/IP socket. The Stream class and its derived classes provide a generic view of these different types of input and output, and isolate the programmer from the specific details of the operating system and the underlying devices.

Streams involve three fundamental operations:

  • You can read from streams. Reading is the transfer of data from a stream into a data structure, such as an array of bytes.

  • You can write to streams. Writing is the transfer of data from a data structure into a stream.

  • Streams can support seeking. Seeking refers to querying and modifying the current position within a stream. Seek capability depends on the kind of backing store a stream has. For example, network streams have no unified concept of a current position, and therefore typically do not support seeking.

Some of the more commonly used streams that inherit from T:System.IO.Stream are T:System.IO.FileStream, and T:System.IO.MemoryStream.

Depending on the underlying data source or repository, streams might support only some of these capabilities. You can query a stream for its capabilities by using the P:System.IO.Stream.CanRead, P:System.IO.Stream.CanWrite, and P:System.IO.Stream.CanSeek properties of the T:System.IO.Stream class.

The M:System.IO.Stream.Read(System.Byte[],System.Int32,System.Int32) and M:System.IO.Stream.Write(System.Byte[],System.Int32,System.Int32) methods read and write data in a variety of formats. For streams that support seeking, use the M:System.IO.Stream.Seek(System.Int64,System.IO.SeekOrigin) and M:System.IO.Stream.SetLength(System.Int64) methods and the P:System.IO.Stream.Position and P:System.IO.Stream.Length properties to query and modify the current position and length of a stream.

This type implements the T:System.IDisposable interface. When you have finished using the type, you should dispose of it either directly or indirectly. To dispose of the type directly, call its M:System.IDisposable.Dispose method in a try/catch block. To dispose of it indirectly, use a language construct such as using (in C#) or Using (in Visual Basic). For more information, see the “Using an Object that Implements IDisposable” section in the T:System.IDisposable interface topic.

Disposing a T:System.IO.Stream object flushes any buffered data, and essentially calls the M:System.IO.Stream.Flush method for you. M:System.IO.Stream.Dispose also releases operating system resources such as file handles, network connections, or memory used for any internal buffering. The T:System.IO.BufferedStream class provides the capability of wrapping a buffered stream around another stream in order to improve read and write performance.

Starting with the net_v45, the T:System.IO.Stream class includes async methods to simplify asynchronous operations. An async method contains Async in its name, such as M:System.IO.Stream.ReadAsync(System.Byte[],System.Int32,System.Int32), M:System.IO.Stream.WriteAsync(System.Byte[],System.Int32,System.Int32), M:System.IO.Stream.CopyToAsync(System.IO.Stream), and M:System.IO.Stream.FlushAsync(System.Threading.CancellationToken). These methods enable you to perform resource-intensive I/O operations without blocking the main thread. This performance consideration is particularly important in a win8_appname_long app or desktop_appname app where a time-consuming stream operation can block the UI thread and make your app appear as if it is not working. The async methods are used in conjunction with the async and await keywords in Visual Basic and C#.

When used in a win8_appname_long app, T:System.IO.Stream includes two extension methods: M:System.IO.WindowsRuntimeStreamExtensions.AsInputStream(System.IO.Stream) and M:System.IO.WindowsRuntimeStreamExtensions.AsOutputStream(System.IO.Stream). These methods convert a T:System.IO.Stream object to a stream in the wrt. You can also convert a stream in the wrt to a T:System.IO.Stream object by using the M:System.IO.WindowsRuntimeStreamExtensions.AsStreamForRead(Windows.Storage.Streams.IInputStream) and M:System.IO.WindowsRuntimeStreamExtensions.AsStreamForWrite(Windows.Storage.Streams.IOutputStream) methods. For more information, see How to: Convert Between .NET Framework Streams and Windows Runtime Streams

Some stream implementations perform local buffering of the underlying data to improve performance. For such streams, you can use the M:System.IO.Stream.Flush or M:System.IO.Stream.FlushAsync method to clear any internal buffers and ensure that all data has been written to the underlying data source or repository.

If you need a stream with no backing store (also known as a bit bucket), use the F:System.IO.Stream.Null field to retrieve an instance of a stream that is designed for this purpose.

구현자 참고 사항:

When you implement a derived class of T:System.IO.Stream, you must provide implementations for the M:System.IO.Stream.Read(System.Byte[],System.Int32,System.Int32) and M:System.IO.Stream.Write(System.Byte[],System.Int32,System.Int32) methods. The asynchronous methods M:System.IO.Stream.ReadAsync(System.Byte[],System.Int32,System.Int32), M:System.IO.Stream.WriteAsync(System.Byte[],System.Int32,System.Int32), and M:System.IO.Stream.CopyToAsync(System.IO.Stream) use the synchronous methods M:System.IO.Stream.Read(System.Byte[],System.Int32,System.Int32) and M:System.IO.Stream.Write(System.Byte[],System.Int32,System.Int32) in their implementations. Therefore, your implementations of M:System.IO.Stream.Read(System.Byte[],System.Int32,System.Int32) and M:System.IO.Stream.Write(System.Byte[],System.Int32,System.Int32) will work correctly with the asynchronous methods. The default implementations of M:System.IO.Stream.ReadByte and M:System.IO.Stream.WriteByte(System.Byte) create a new single-element byte array, and then call your implementations of M:System.IO.Stream.Read(System.Byte[],System.Int32,System.Int32) and M:System.IO.Stream.Write(System.Byte[],System.Int32,System.Int32). When you derive from T:System.IO.Stream, we recommend that you override these methods to access your internal buffer, if you have one, for substantially better performance. You must also provide implementations of P:System.IO.Stream.CanRead, P:System.IO.Stream.CanSeek, P:System.IO.Stream.CanWrite, M:System.IO.Stream.Flush, P:System.IO.Stream.Length, P:System.IO.Stream.Position, M:System.IO.Stream.Seek(System.Int64,System.IO.SeekOrigin), and M:System.IO.Stream.SetLength(System.Int64).

Do not override the M:System.IO.Stream.Close method, instead, put all the T:System.IO.Stream cleanup logic in the M:System.IO.Stream.Dispose(System.Boolean) method. For more information, see Implementing a Dispose Method.

The following example demonstrates how to use two T:System.IO.FileStream objects to asynchronously copy the files from one directory to another directory. The T:System.IO.FileStream class derives from the T:System.IO.Stream class. Notice that the E:System.Web.UI.WebControls.Button.Click event handler for the T:System.Windows.Controls.Button control is marked with the async modifier because it calls an asynchronous method.

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

namespace WpfApplication
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            string StartDirectory = @"c:\Users\exampleuser\start";
            string EndDirectory = @"c:\Users\exampleuser\end";

            foreach (string filename in Directory.EnumerateFiles(StartDirectory))
            {
                using (FileStream SourceStream = File.Open(filename, FileMode.Open))
                {
                    using (FileStream DestinationStream = File.Create(EndDirectory + filename.Substring(filename.LastIndexOf('\\'))))
                    {
                        await SourceStream.CopyToAsync(DestinationStream);
                    }
                }
            }
        }
    }
}

유니버설 Windows 플랫폼
8 이후 사용 가능
.NET Framework
1.1 이후 사용 가능
이식 가능한 클래스 라이브러리
이식 가능한 .NET 플랫폼 에서 지원됨
Silverlight
2.0 이후 사용 가능
Windows Phone Silverlight
7.0 이후 사용 가능
Windows Phone
8.1 이후 사용 가능

이 형식의 모든 public static(Visual Basic의 공유 Visual Basic의 경우) 멤버는 스레드로부터 안전합니다. 인스턴스 멤버는 스레드로부터의 안전이 보장되지 않습니다.

맨 위로 이동
표시: