MemoryStream 클래스

정의

백업 저장소가 메모리인 스트림을 만듭니다.Creates a stream whose backing store is memory.

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

예제

다음 코드 예제에는 메모리를 사용 하 여 백업 저장소로 데이터를 쓰고 읽는 방법을 보여 줍니다.The following code example shows how to read and write data using memory as a backing store.

using namespace System;
using namespace System::IO;
using namespace System::Text;

int main()
{
   int count;
   array<Byte>^byteArray;
   array<Char>^charArray;
   UnicodeEncoding^ uniEncoding = gcnew UnicodeEncoding;

   // Create the data to write to the stream.
   array<Byte>^firstString = uniEncoding->GetBytes( "Invalid file path characters are: " );
   array<Byte>^secondString = uniEncoding->GetBytes( Path::InvalidPathChars );

   MemoryStream^ memStream = gcnew MemoryStream( 100 );
   try
   {
      // Write the first string to the stream.
      memStream->Write( firstString, 0, firstString->Length );

      // Write the second string to the stream, byte by byte.
      count = 0;
      while ( count < secondString->Length )
      {
         memStream->WriteByte( secondString[ count++ ] );
      }

      
      // Write the stream properties to the console.
      Console::WriteLine( "Capacity = {0}, Length = {1}, "
      "Position = {2}\n", memStream->Capacity.ToString(), memStream->Length.ToString(), memStream->Position.ToString() );

      // Set the stream position to the beginning of the stream.
      memStream->Seek( 0, SeekOrigin::Begin );

      // Read the first 20 bytes from the stream.
      byteArray = gcnew array<Byte>(memStream->Length);
      count = memStream->Read( byteArray, 0, 20 );

      // Read the remaining bytes, byte by byte.
      while ( count < memStream->Length )
      {
         byteArray[ count++ ] = Convert::ToByte( memStream->ReadByte() );
      }
      
      // Decode the Byte array into a Char array 
      // and write it to the console.
      charArray = gcnew array<Char>(uniEncoding->GetCharCount( byteArray, 0, count ));
      uniEncoding->GetDecoder()->GetChars( byteArray, 0, count, charArray, 0 );
      Console::WriteLine( charArray );
   }
   finally
   {
      memStream->Close();
   }
}
using System;
using System.IO;
using System.Text;

class MemStream
{
    static void Main()
    {
        int count;
        byte[] byteArray;
        char[] charArray;
        UnicodeEncoding uniEncoding = new UnicodeEncoding();

        // Create the data to write to the stream.
        byte[] firstString = uniEncoding.GetBytes(
            "Invalid file path characters are: ");
        byte[] secondString = uniEncoding.GetBytes(
            Path.GetInvalidPathChars());

        using(MemoryStream memStream = new MemoryStream(100))
        {
            // Write the first string to the stream.
            memStream.Write(firstString, 0 , firstString.Length);

            // Write the second string to the stream, byte by byte.
            count = 0;
            while(count < secondString.Length)
            {
                memStream.WriteByte(secondString[count++]);
            }

            // Write the stream properties to the console.
            Console.WriteLine(
                "Capacity = {0}, Length = {1}, Position = {2}\n",
                memStream.Capacity.ToString(),
                memStream.Length.ToString(),
                memStream.Position.ToString());

            // Set the position to the beginning of the stream.
            memStream.Seek(0, SeekOrigin.Begin);

            // Read the first 20 bytes from the stream.
            byteArray = new byte[memStream.Length];
            count = memStream.Read(byteArray, 0, 20);

            // Read the remaining bytes, byte by byte.
            while(count < memStream.Length)
            {
                byteArray[count++] =
                    Convert.ToByte(memStream.ReadByte());
            }

            // Decode the byte array into a char array
            // and write it to the console.
            charArray = new char[uniEncoding.GetCharCount(
                byteArray, 0, count)];
            uniEncoding.GetDecoder().GetChars(
                byteArray, 0, count, charArray, 0);
            Console.WriteLine(charArray);
        }
    }
}
Imports System.IO
Imports System.Text

Module MemStream

    Sub Main()
    
        Dim count As Integer
        Dim byteArray As Byte()
        Dim charArray As Char()
        Dim uniEncoding As New UnicodeEncoding()

        ' Create the data to write to the stream.
        Dim firstString As Byte() = _
            uniEncoding.GetBytes("Invalid file path characters are: ")
        Dim secondString As Byte() = _
            uniEncoding.GetBytes(Path.GetInvalidPathChars())

        Dim memStream As New MemoryStream(100)
        Try
            ' Write the first string to the stream.
            memStream.Write(firstString, 0 , firstString.Length)

            ' Write the second string to the stream, byte by byte.
            count = 0
            While(count < secondString.Length)
                memStream.WriteByte(secondString(count))
                count += 1
            End While
            
            ' Write the stream properties to the console.
            Console.WriteLine( _
                "Capacity = {0}, Length = {1}, Position = {2}", _
                memStream.Capacity.ToString(), _
                memStream.Length.ToString(), _
                memStream.Position.ToString())

            ' Set the stream position to the beginning of the stream.
            memStream.Seek(0, SeekOrigin.Begin)

            ' Read the first 20 bytes from the stream.
            byteArray = _
                New Byte(CType(memStream.Length, Integer)){}
            count = memStream.Read(byteArray, 0, 20)

            ' Read the remaining Bytes, Byte by Byte.
            While(count < memStream.Length)
                byteArray(count) = _
                    Convert.ToByte(memStream.ReadByte())
                count += 1
            End While

            ' Decode the Byte array into a Char array 
            ' and write it to the console.
            charArray = _
                New Char(uniEncoding.GetCharCount( _
                byteArray, 0, count)){}
            uniEncoding.GetDecoder().GetChars( _
                byteArray, 0, count, charArray, 0)
            Console.WriteLine(charArray)
        Finally
            memStream.Close()
        End Try

    End Sub
End Module

설명

스트림의 현재 위치는 다음 읽기 또는 쓰기 작업 위치를 수행할 수 있게 합니다.The current position of a stream is the position at which the next read or write operation could take place. 현재 위치를 검색 하거나 통해 설정할 수는 Seek 메서드.The current position can be retrieved or set through the Seek method. 새 인스턴스가 MemoryStream 만들어지면 현재 위치는 0으로 설정 됩니다.When a new instance of MemoryStream is created, the current position is set to zero.

참고

이 형식은 IDisposable 인터페이스를 구현하지만 실제로 삭제하는 리소스는 없습니다.This type implements the IDisposable interface, but does not actually have any resources to dispose. Dispose()를 직접 호출하거나 using(C#) 또는 Using(Visual Basic) 같은 언어 구문을 사용하여 삭제할 필요가 없습니다.This means that disposing it by directly calling Dispose() or by using a language construct such as using (in C#) or Using (in Visual Basic) is not necessary.

메모리 스트림을 만들 부호 없는 바이트 배열을 사용 하 여 데이터의 크기 조정이 불가능 스트림을 제공 합니다.Memory streams created with an unsigned byte array provide a non-resizable stream of the data. 바이트 배열을 사용 하는 경우 추가할 아니고 생성자에 전달 된 매개 변수에 따라 기존 내용을 수정할 수 있지만 스트림을 축소할 수 있습니다.When using a byte array, you can neither append to nor shrink the stream, although you might be able to modify the existing contents depending on the parameters passed into the constructor. 빈 메모리 스트림 크기를 조정할 쓸 및에서 읽을 수 수 있습니다.Empty memory streams are resizable, and can be written to and read from.

경우는 MemoryStream 개체가 ResX 파일 또는.resources 파일에 추가 된, 호출을 GetStream 검색을 위해 런타임에 메서드.If a MemoryStream object is added to a ResX file or a .resources file, call the GetStream method at runtime to retrieve it.

경우는 MemoryStream 개체는 실제로으로 serialize 될 리소스 파일로 serialize 되는 UnmanagedMemoryStream합니다.If a MemoryStream object is serialized to a resource file it will actually be serialized as an UnmanagedMemoryStream. 이 동작은를 거칠 필요 없이 데이터에 대 한 포인터를 직접 가져올 수 있는 기능 뿐만 아니라 더 나은 성능을 제공 합니다. Stream 메서드.This behavior provides better performance, as well as the ability to get a pointer to the data directly, without having to go through Stream methods.

생성자

MemoryStream()

0으로 초기화된 확장 가능한 용량을 사용하여 MemoryStream 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the MemoryStream class with an expandable capacity initialized to zero.

MemoryStream(Byte[])

지정된 바이트 배열을 기반으로 하는 MemoryStream 클래스의 크기 조정이 불가능한 새 인스턴스를 초기화합니다.Initializes a new non-resizable instance of the MemoryStream class based on the specified byte array.

MemoryStream(Byte[], Boolean)

지정된 대로 설정된 MemoryStream 속성을 사용하여 지정된 바이트 배열을 기반으로 하는 CanWrite 클래스의 크기 조정이 불가능한 새 인스턴스를 초기화합니다.Initializes a new non-resizable instance of the MemoryStream class based on the specified byte array with the CanWrite property set as specified.

MemoryStream(Byte[], Int32, Int32)

바이트 배열의 지정된 영역(인덱스)을 기반으로 하는 MemoryStream 클래스의 크기 조정이 불가능한 새 인스턴스를 초기화합니다.Initializes a new non-resizable instance of the MemoryStream class based on the specified region (index) of a byte array.

MemoryStream(Byte[], Int32, Int32, Boolean)

지정된 대로 설정된 MemoryStream 속성을 사용하여 지정된 바이트 배열의 영역을 기반으로 하는 CanWrite 클래스의 크기 조정이 불가능한 새 인스턴스를 초기화합니다.Initializes a new non-resizable instance of the MemoryStream class based on the specified region of a byte array, with the CanWrite property set as specified.

MemoryStream(Byte[], Int32, Int32, Boolean, Boolean)

지정된 대로 설정된 MemoryStream 속성과 지정된 대로 설정된 CanWrite 호출 기능을 사용하여 지정된 바이트 배열의 영역을 기반으로 하는 GetBuffer() 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the MemoryStream class based on the specified region of a byte array, with the CanWrite property set as specified, and the ability to call GetBuffer() set as specified.

MemoryStream(Int32)

지정된 대로 초기화된 확장 가능한 용량을 사용하여 MemoryStream 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the MemoryStream class with an expandable capacity initialized as specified.

속성

CanRead

현재 스트림이 읽기를 지원하는지를 나타내는 값을 가져옵니다.Gets a value indicating whether the current stream supports reading.

CanSeek

현재 스트림이 검색을 지원하는지를 나타내는 값을 가져옵니다.Gets a value indicating whether the current stream supports seeking.

CanTimeout

현재 스트림이 시간 초과될 수 있는지를 결정하는 값을 가져옵니다.Gets a value that determines whether the current stream can time out.

(다음에서 상속됨 Stream)
CanWrite

현재 스트림이 쓰기를 지원하는지를 나타내는 값을 가져옵니다.Gets a value indicating whether the current stream supports writing.

Capacity

이 스트림에 할당된 바이트 수를 가져오거나 설정합니다.Gets or sets the number of bytes allocated for this stream.

Length

스트림의 길이(바이트)를 가져옵니다.Gets the length of the stream in bytes.

Position

스트림 내의 현재 위치를 가져오거나 설정합니다.Gets or sets the current position within the stream.

ReadTimeout

스트림 읽기 시도가 만료되기 전까지 기다릴 시간을 결정하는 값(밀리초)을 가져오거나 설정합니다.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to read before timing out.

(다음에서 상속됨 Stream)
WriteTimeout

스트림 쓰기 시도가 만료되기 전까지 기다릴 시간을 결정하는 값(밀리초)을 가져오거나 설정합니다.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to write before timing out.

(다음에서 상속됨 Stream)

메서드

BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)
Close()

읽기 및 쓰기용 스트림을 닫습니다.Closes the stream for reading and writing.

CopyTo(Stream)

현재 스트림에서 바이트를 읽어서 다른 스트림에 해당 바이트를 씁니다.Reads the bytes from the current stream and writes them to another stream.

(다음에서 상속됨 Stream)
CopyTo(Stream, Int32)
CopyToAsync(Stream)

현재 스트림에서 모든 바이트를 비동기적으로 읽어 다른 스트림에 씁니다.Asynchronously reads the bytes from the current stream and writes them to another stream.

(다음에서 상속됨 Stream)
CopyToAsync(Stream, CancellationToken)

현재 스트림에서 바이트를 비동기적으로 읽어 지정된 취소 토큰을 사용하여 다른 스트림에 씁니다.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified cancellation token.

(다음에서 상속됨 Stream)
CopyToAsync(Stream, Int32)

현재 스트림에서 바이트를 비동기적으로 읽어 지정된 버퍼 크기로 다른 스트림에 씁니다.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(다음에서 상속됨 Stream)
CopyToAsync(Stream, Int32, CancellationToken)

현재 스트림에서 모든 바이트를 비동기적으로 읽어 지정된 버퍼 크기 및 취소 토큰을 사용하여 다른 스트림에 씁니다.Asynchronously reads all the bytes from the current stream and writes them to another stream, using a specified buffer size and cancellation token.

CreateObjRef(Type)

원격 개체와 통신하는 데 사용되는 프록시 생성에 필요한 모든 관련 정보가 들어 있는 개체를 만듭니다.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

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

WaitHandle 개체를 할당합니다.Allocates a WaitHandle object.

(다음에서 상속됨 Stream)
Dispose()

Stream에서 사용하는 모든 리소스를 해제합니다.Releases all resources used by the Stream.

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

MemoryStream 클래스에 사용되는 관리되지 않는 리소스를 해제하고, 필요에 따라 관리되는 리소스를 해제합니다.Releases the unmanaged resources used by the MemoryStream class and optionally releases the managed resources.

DisposeAsync()

Stream에서 사용하는 관리되지 않는 리소스를 비동기적으로 해제합니다.Asynchronously releases the unmanaged resources used by the Stream.

(다음에서 상속됨 Stream)
EndRead(IAsyncResult)
EndWrite(IAsyncResult)
Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.Determines whether the specified object is equal to the current object.

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

Flush() 메서드를 재정의하여 아무런 작업도 수행되지 않도록 합니다.Overrides the Flush() method so that no action is performed.

FlushAsync()

이 스트림에 대한 모든 버퍼를 비동기적으로 지우고 버퍼링된 모든 데이터가 내부 디바이스에 비동기적으로 쓰여지도록 합니다.Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device.

(다음에서 상속됨 Stream)
FlushAsync(CancellationToken)

이 스트림에 대한 모든 버퍼를 비동기적으로 지우고 취소 요청을 모니터링합니다.Asynchronously clears all buffers for this stream, and monitors cancellation requests.

GetBuffer()

이 스트림을 만드는 데 사용된 부호 없는 바이트의 배열을 반환합니다.Returns the array of unsigned bytes from which this stream was created.

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)
ObjectInvariant()

Contract에 대한 지원을 제공합니다.Provides support for a Contract.

Read(Byte[], Int32, Int32)

현재 스트림에서 바이트 블록을 읽어서 버퍼에 씁니다.Reads a block of bytes from the current stream and writes the data to a buffer.

Read(Span<Byte>)
ReadAsync(Byte[], Int32, Int32)

현재 스트림에서 바이트 시퀀스를 읽고 읽은 바이트 수만큼 스트림에서 위치를 비동기적으로 앞으로 이동합니다.Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(다음에서 상속됨 Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

현재 스트림에서 바이트의 시퀀스를 비동기적으로 읽고 읽은 바이트 수만큼 스트림 내에서 앞으로 이동하며 취소 요청을 모니터링합니다.Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

ReadAsync(Memory<Byte>, CancellationToken)
ReadByte()

현재 스트림에서 바이트를 읽습니다.Reads a byte from the current stream.

Seek(Int64, SeekOrigin)

현재 스트림 내의 위치를 지정된 값으로 설정합니다.Sets the position within the current stream to the specified value.

SetLength(Int64)

현재 스트림의 길이를 지정된 값으로 설정합니다.Sets the length of the current stream to the specified value.

ToArray()

Position 속성에 관계없이 바이트 배열에 스트림 내용을 씁니다.Writes the stream contents to a byte array, regardless of the Position property.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(다음에서 상속됨 Object)
TryGetBuffer(ArraySegment<Byte>)

이 스트림을 만드는 데 사용된 부호 없는 바이트의 배열을 반환합니다.Returns the array of unsigned bytes from which this stream was created. 반환 값은 변환의 성공 여부를 나타냅니다.The return value indicates whether the conversion succeeded.

Write(Byte[], Int32, Int32)

버퍼에서 읽은 데이터를 사용하여 현재 스트림에 바이트 블록을 씁니다.Writes a block of bytes to the current stream using data read from a buffer.

Write(ReadOnlySpan<Byte>)
WriteAsync(Byte[], Int32, Int32)

현재 스트림에 바이트 시퀀스를 비동기적으로 쓰고 쓴 바이트 수만큼 이 스트림에서 현재 위치를 앞으로 이동합니다.Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(다음에서 상속됨 Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

바이트의 시퀀스를 현재 스트림에 비동기적으로 쓰고 쓰여진 바이트 수만큼 이 스트림 내의 현재 위치를 앞으로 이동한 후 취소 요청을 모니터링합니다.Asynchronously writes a sequence of bytes to the current stream, advances the current position within this stream by the number of bytes written, and monitors cancellation requests.

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)
WriteByte(Byte)

현재 위치에서 현재 스트림에 바이트를 씁니다.Writes a byte to the current stream at the current position.

WriteTo(Stream)

다른 스트림에 이 메모리 스트림의 전체 내용을 씁니다.Writes the entire contents of this memory stream to another stream.

명시적 인터페이스 구현

IDisposable.Dispose()

Stream에서 사용하는 모든 리소스를 해제합니다.Releases all resources used by the Stream.

(다음에서 상속됨 Stream)

확장 메서드

AsInputStream(Stream)

Windows 스토어 앱용 .NET의 관리형 스트림을 Windows 런타임의 입력 스트림으로 변환합니다.Converts a managed stream in the .NET for Windows Store apps to an input stream in the Windows Runtime.

AsOutputStream(Stream)

Windows 스토어 앱용 .NET의 관리형 스트림을 Windows 런타임의 출력 스트림으로 변환합니다.Converts a managed stream in the .NET for Windows Store apps to an output stream in the Windows Runtime.

AsRandomAccessStream(Stream)

지정된 스트림을 임의 액세스 스트림으로 변환합니다.Converts the specified stream to a random access stream.

GetWindowsRuntimeBuffer(MemoryStream)

지정된 메모리 스트림과 동일한 메모리를 나타내는 Windows.Storage.Streams.IBuffer 인터페이스를 반환합니다.Returns a Windows.Storage.Streams.IBuffer interface that represents the same memory as the specified memory stream.

GetWindowsRuntimeBuffer(MemoryStream, Int32, Int32)

지정된 메모리 스트림을 나타내는 메모리 내 영역을 나타내는 Windows.Storage.Streams.IBuffer 인터페이스를 반환합니다.Returns a Windows.Storage.Streams.IBuffer interface that represents a region within the memory that the specified memory stream represents.

적용 대상

추가 정보