MemoryStream Klasa

Definicja

Tworzy strumień, którego zapasowy magazyn jest pamięcią.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
Dziedziczenie
Atrybuty

Przykłady

Poniższy przykład kodu pokazuje, jak odczytywać i zapisywać dane przy użyciu pamięci jako magazynu zapasowego.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

Uwagi

Bieżąca pozycja strumienia to pozycja, w której może zostać przeprowadzona następna operacja odczytu lub zapisu.The current position of a stream is the position at which the next read or write operation could take place. Bieżącą pozycję można pobrać lub ustawić za pomocą metody Seek.The current position can be retrieved or set through the Seek method. Gdy tworzone jest nowe wystąpienie MemoryStream, bieżące położenie jest ustawione na zero.When a new instance of MemoryStream is created, the current position is set to zero.

Uwaga

Ten typ implementuje IDisposable interfejsu, ale faktycznie nie ma żadnych zasobów do usunięcia.This type implements the IDisposable interface, but does not actually have any resources to dispose. Oznacza to, że usuwania go poprzez bezpośrednie wywoływanie Dispose() lub przy użyciu języka konstrukcji takich jak using (w C#) lub Using (w języku Visual Basic) nie jest konieczne.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.

Strumienie pamięci utworzone za pomocą tablicy bajtowej bez znaku zapewniają strumień danych o niezmiennym rozmiarze.Memory streams created with an unsigned byte array provide a non-resizable stream of the data. W przypadku korzystania z tablicy bajtowej nie można dołączać ani zmniejszać strumienia, chociaż można modyfikować istniejącą zawartość w zależności od parametrów przekazaną do konstruktora.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. Puste strumienie pamięci są zmieniane i mogą być zapisywane i odczytywane z.Empty memory streams are resizable, and can be written to and read from.

Jeśli do pliku ResX lub Resources zostanie dodany obiekt MemoryStream, wywołaj metodę GetStream w czasie wykonywania, aby ją pobrać.If a MemoryStream object is added to a ResX file or a .resources file, call the GetStream method at runtime to retrieve it.

Jeśli obiekt MemoryStream jest serializowany do pliku zasobów, w rzeczywistości zostanie Zserializowany jako UnmanagedMemoryStream.If a MemoryStream object is serialized to a resource file it will actually be serialized as an UnmanagedMemoryStream. Takie zachowanie zapewnia lepszą wydajność, a także możliwość uzyskania wskaźnika bezpośrednio do danych, bez konieczności przechodzenia przez Stream metody.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.

Konstruktory

MemoryStream()

Inicjuje nowe wystąpienie klasy MemoryStream z rozszerzalną pojemnością zainicjowaną na zero.Initializes a new instance of the MemoryStream class with an expandable capacity initialized to zero.

MemoryStream(Byte[])

Inicjuje nowe wystąpienie o niezmiennym rozmiarze klasy MemoryStream w oparciu o określoną tablicę bajtów.Initializes a new non-resizable instance of the MemoryStream class based on the specified byte array.

MemoryStream(Byte[], Boolean)

Inicjuje nowe niezmienny wystąpienie klasy MemoryStream w oparciu o określoną tablicę bajtową z ustawioną właściwością CanWrite określoną.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)

Inicjuje nowe wystąpienie o niezmiennym rozmiarze klasy MemoryStream w oparciu o określony region (indeks) tablicy bajtów.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)

Inicjuje nowe niezmienny wystąpienie klasy MemoryStream w oparciu o określony region tablicy bajtów z ustawioną właściwością CanWrite określoną.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)

Inicjuje nowe wystąpienie klasy MemoryStream w oparciu o określony region tablicy bajtów z ustawioną właściwością CanWrite, a także możliwość wywołania GetBuffer() ustawionych jako określony.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)

Inicjuje nowe wystąpienie klasy MemoryStream z rozszerzalną pojemnością, która została zainicjowana w określony sposób.Initializes a new instance of the MemoryStream class with an expandable capacity initialized as specified.

Właściwości

CanRead

Pobiera wartość wskazującą, czy bieżący strumień obsługuje odczytywanie.Gets a value indicating whether the current stream supports reading.

CanSeek

Pobiera wartość wskazującą, czy bieżący strumień obsługuje wyszukiwanie.Gets a value indicating whether the current stream supports seeking.

CanTimeout

Pobiera wartość określającą, czy bieżący strumień może przekroczyć limit czasu.Gets a value that determines whether the current stream can time out.

(Odziedziczone po Stream)
CanWrite

Pobiera wartość wskazującą, czy bieżący strumień obsługuje zapisywanie.Gets a value indicating whether the current stream supports writing.

Capacity

Pobiera lub ustawia liczbę bajtów przydzieloną dla tego strumienia.Gets or sets the number of bytes allocated for this stream.

Length

Pobiera długość strumienia w bajtach.Gets the length of the stream in bytes.

Position

Pobiera lub ustawia bieżącą pozycję w strumieniu.Gets or sets the current position within the stream.

ReadTimeout

Pobiera lub ustawia wartość (w milisekundach), która określa, jak długo strumień będzie próbować odczytać przed upływem limitu czasu.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to read before timing out.

(Odziedziczone po Stream)
WriteTimeout

Pobiera lub ustawia wartość (w milisekundach), która określa, jak długo strumień podejmie próbę zapisu przed upływem limitu czasu.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to write before timing out.

(Odziedziczone po Stream)

Metody

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

Rozpoczęcie asynchronicznej operacji odczytu.Begins an asynchronous read operation. (Rozważ użycie ReadAsync(Byte[], Int32, Int32, CancellationToken) zamiast).(Consider using ReadAsync(Byte[], Int32, Int32, CancellationToken) instead.)

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

Rozpoczyna asynchroniczne operacje zapisu.Begins an asynchronous write operation. (Rozważ użycie WriteAsync(Byte[], Int32, Int32, CancellationToken) zamiast).(Consider using WriteAsync(Byte[], Int32, Int32, CancellationToken) instead.)

Close()

Zamyka strumień do odczytu i zapisu.Closes the stream for reading and writing.

CopyTo(Stream)

Odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu.Reads the bytes from the current stream and writes them to another stream.

(Odziedziczone po Stream)
CopyTo(Stream, Int32)

Odczytuje bajty z bieżącego strumienia pamięci i zapisuje je w innym strumieniu przy użyciu określonego rozmiaru buforu.Reads the bytes from the current memory stream and writes them to another stream, using a specified buffer size.

CopyToAsync(Stream)

Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu.Asynchronously reads the bytes from the current stream and writes them to another stream.

(Odziedziczone po Stream)
CopyToAsync(Stream, CancellationToken)

Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu przy użyciu określonego tokenu anulowania.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified cancellation token.

(Odziedziczone po Stream)
CopyToAsync(Stream, Int32)

Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu przy użyciu określonego rozmiaru buforu.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Odziedziczone po Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Asynchronicznie odczytuje wszystkie bajty z bieżącego strumienia i zapisuje je w innym strumieniu przy użyciu określonego rozmiaru buforu i tokenu anulowania.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)

Tworzy obiekt, który zawiera wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikacji z obiektem zdalnym.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Odziedziczone po MarshalByRefObject)
CreateWaitHandle()

WaitHandle Przydziela obiekt.Allocates a WaitHandle object.

(Odziedziczone po Stream)
Dispose()

Zwalnia wszystkie zasoby używane przez Streamprogram.Releases all resources used by the Stream.

(Odziedziczone po Stream)
Dispose(Boolean)

Zwalnia zasoby niezarządzane używane przez klasę MemoryStream i opcjonalnie zwalnia zasoby zarządzane.Releases the unmanaged resources used by the MemoryStream class and optionally releases the managed resources.

DisposeAsync()

Asynchronicznie zwalnia niezarządzane zasoby używane przez Stream.Asynchronously releases the unmanaged resources used by the Stream.

(Odziedziczone po Stream)
EndRead(IAsyncResult)

Czeka na zakończenie oczekujących asynchronicznych operacji odczytu.Waits for the pending asynchronous read to complete. (Rozważ użycie ReadAsync(Byte[], Int32, Int32, CancellationToken) zamiast).(Consider using ReadAsync(Byte[], Int32, Int32, CancellationToken) instead.)

EndWrite(IAsyncResult)

Zamyka asynchroniczne operacje zapisu.Ends an asynchronous write operation. (Rozważ użycie WriteAsync(Byte[], Int32, Int32, CancellationToken) zamiast).(Consider using WriteAsync(Byte[], Int32, Int32, CancellationToken) instead.)

Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
Flush()

Zastępuje metodę Flush(), tak aby nie była wykonywana żadna akcja.Overrides the Flush() method so that no action is performed.

FlushAsync()

Asynchronicznie czyści wszystkie bufory dla tego strumienia i powoduje, że wszystkie buforowane dane są zapisywane na podstawowym urządzeniu.Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device.

(Odziedziczone po Stream)
FlushAsync(CancellationToken)

Asynchronicznie czyści wszystkie bufory dla tego strumienia i monitoruje żądania anulowania.Asynchronously clears all buffers for this stream, and monitors cancellation requests.

GetBuffer()

Zwraca tablicę bajtów bez znaku, z której został utworzony ten strumień.Returns the array of unsigned bytes from which this stream was created.

GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetLifetimeService()

Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Odziedziczone po MarshalByRefObject)
GetType()

Pobiera Type bieżącego wystąpienia.Gets the Type of the current instance.

(Odziedziczone po Object)
InitializeLifetimeService()

Uzyskuje obiekt usługi istnienia w celu kontrolowania zasad okresu istnienia dla tego wystąpienia.Obtains a lifetime service object to control the lifetime policy for this instance.

(Odziedziczone po MarshalByRefObject)
MemberwiseClone()

Tworzy skróconą kopię bieżącego Object.Creates a shallow copy of the current Object.

(Odziedziczone po Object)
MemberwiseClone(Boolean)

Tworzy skróconą kopię bieżącego MarshalByRefObject obiektu.Creates a shallow copy of the current MarshalByRefObject object.

(Odziedziczone po MarshalByRefObject)
ObjectInvariant()

Zapewnia pomoc techniczną dla Contract.Provides support for a Contract.

Read(Byte[], Int32, Int32)

Odczytuje blok bajtów z bieżącego strumienia i zapisuje dane w buforze.Reads a block of bytes from the current stream and writes the data to a buffer.

Read(Span<Byte>)

Odczytuje sekwencję bajtów z bieżącego strumienia pamięci i postępuje zgodnie z pozycją w strumieniu pamięci przez liczbę odczytanych bajtów.Reads a sequence of bytes from the current memory stream and advances the position within the memory stream by the number of bytes read.

ReadAsync(Byte[], Int32, Int32)

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia i przesuwa pozycję w strumieniu o liczbę odczytanych bajtów.Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(Odziedziczone po Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia, przesuwa pozycję w strumieniu o liczbę odczytanych bajtów i monitoruje żądania anulowania.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)

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia pamięci, zapisuje sekwencję do destination, przesuwa pozycję w strumieniu pamięci o liczbę odczytanych bajtów i monitoruje żądania anulowania.Asynchronously reads a sequence of bytes from the current memory stream, writes the sequence into destination, advances the position within the memory stream by the number of bytes read, and monitors cancellation requests.

ReadByte()

Odczytuje bajt z bieżącego strumienia.Reads a byte from the current stream.

Seek(Int64, SeekOrigin)

Ustawia pozycję w bieżącym strumieniu na określoną wartość.Sets the position within the current stream to the specified value.

SetLength(Int64)

Ustawia długość bieżącego strumienia do określonej wartości.Sets the length of the current stream to the specified value.

ToArray()

Zapisuje zawartość strumienia do tablicy bajtów, niezależnie od właściwości Position.Writes the stream contents to a byte array, regardless of the Position property.

ToString()

Zwraca ciąg, który reprezentuje bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)
TryGetBuffer(ArraySegment<Byte>)

Zwraca tablicę bajtów bez znaku, z której został utworzony ten strumień.Returns the array of unsigned bytes from which this stream was created. Zwracana wartość wskazuje, czy konwersja powiodła się.The return value indicates whether the conversion succeeded.

Write(Byte[], Int32, Int32)

Zapisuje blok bajtów do bieżącego strumienia przy użyciu danych odczytanych z bufora.Writes a block of bytes to the current stream using data read from a buffer.

Write(ReadOnlySpan<Byte>)

Zapisuje sekwencję bajtów zawartych w source w bieżącym strumieniu pamięci i postępuje bieżącą pozycję w tym strumieniu pamięci przez liczbę zapisanych bajtów.Writes the sequence of bytes contained in source into the current memory stream and advances the current position within this memory stream by the number of bytes written.

WriteAsync(Byte[], Int32, Int32)

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia i przesuwa bieżącą pozycję w tym strumieniu o liczbę zapisanych bajtów.Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(Odziedziczone po Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia, przesuwa bieżącą pozycję w tym strumieniu o liczbę zapisanych bajtów i monitoruje żądania anulowania.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)

Asynchronicznie zapisuje sekwencję bajtów zawartych w source w bieżącym strumieniu pamięci, przesuwa bieżącą pozycję w tym strumieniu pamięci o liczbę zapisanych bajtów i monitoruje żądania anulowania.Asynchronously writes the sequence of bytes contained in source into the current memory stream, advances the current position within this memory stream by the number of bytes written, and monitors cancellation requests.

WriteByte(Byte)

Zapisuje bajt w bieżącym strumieniu w bieżącym położeniu.Writes a byte to the current stream at the current position.

WriteTo(Stream)

Zapisuje całą zawartość tego strumienia pamięci w innym strumieniu.Writes the entire contents of this memory stream to another stream.

Jawne implementacje interfejsu

IDisposable.Dispose()

Zwalnia wszystkie zasoby używane przez Streamprogram.Releases all resources used by the Stream.

(Odziedziczone po Stream)

Metody rozszerzania

AsInputStream(Stream)

Konwertuje zarządzany strumień w programie .NET dla aplikacji do sklepu Windows na strumień wejściowy w środowisko wykonawcze systemu Windows.Converts a managed stream in the .NET for Windows Store apps to an input stream in the Windows Runtime.

AsOutputStream(Stream)

Konwertuje zarządzany strumień w programie .NET dla aplikacji ze sklepu Windows do strumienia wyjściowego w środowisko wykonawcze systemu Windows.Converts a managed stream in the .NET for Windows Store apps to an output stream in the Windows Runtime.

AsRandomAccessStream(Stream)

Konwertuje określony strumień na strumień o dostępie losowym.Converts the specified stream to a random access stream.

GetWindowsRuntimeBuffer(MemoryStream)

Zwraca interfejs Windows. Storage. Streams. IBuffer, który reprezentuje tę samą pamięć co określony strumień pamięci.Returns a Windows.Storage.Streams.IBuffer interface that represents the same memory as the specified memory stream.

GetWindowsRuntimeBuffer(MemoryStream, Int32, Int32)

Zwraca interfejs Windows. Storage. Streams. IBuffer, który reprezentuje region znajdujący się w pamięci reprezentowanej przez określony strumień pamięci.Returns a Windows.Storage.Streams.IBuffer interface that represents a region within the memory that the specified memory stream represents.

Dotyczy

Zobacz też