MemoryStream Klasa

Definicja

Tworzy strumień, którego magazyn zapasowy jest pamięcią.

public ref class MemoryStream : System::IO::Stream
public class MemoryStream : System.IO.Stream
[System.Serializable]
public class MemoryStream : System.IO.Stream
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class MemoryStream : System.IO.Stream
type MemoryStream = class
    inherit Stream
[<System.Serializable>]
type MemoryStream = class
    inherit Stream
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type MemoryStream = class
    inherit Stream
Public Class MemoryStream
Inherits Stream
Dziedziczenie
MemoryStream
Dziedziczenie
Atrybuty

Przykłady

W poniższym przykładzie kodu pokazano, jak odczytywać i zapisywać dane przy użyciu pamięci jako magazynu zapasowego.

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++] = (byte)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 nastąpić następna operacja odczytu lub zapisu. Bieżące położenie można pobrać lub ustawić za pomocą Seek metody . Po utworzeniu MemoryStream nowego wystąpienia bieżące położenie jest ustawione na zero.

Uwaga

Ten typ implementuje IDisposable interfejs, ale w rzeczywistości nie ma żadnych zasobów do usunięcia. Oznacza to, że jego zastosowanie przez bezpośrednie wywołanie lub użycie konstrukcji języka, takiej jak (w języku C#) lub (w języku Dispose() using Using Visual Basic) nie jest konieczne.

Strumienie pamięci utworzone z niepodpisaną tablicą bajtów zapewniają niemożliwy do zmiany rozmiaru strumień danych. W przypadku korzystania z tablicy bajtów nie można dołączać ani zmniejszać strumienia, chociaż można modyfikować istniejącą zawartość w zależności od parametrów przekazanych do konstruktora. Puste strumienie pamięci są możliwe do zmiany rozmiaru i można je zapisywać i odczytywać.

MemoryStream Jeśli obiekt zostanie dodany do pliku ResX lub pliku resources, wywołaj GetStream metodę w czasie wykonywania, aby go pobrać.

MemoryStream Jeśli obiekt jest serializowany do pliku zasobów, faktycznie będzie serializowany jako UnmanagedMemoryStream. To zachowanie zapewnia lepszą wydajność, a także możliwość bezpośredniego uzyskiwania wskaźnika do danych bez konieczności przechodzenia przez Stream metody.

Konstruktory

MemoryStream()

Inicjuje MemoryStream nowe wystąpienie klasy z rozszerzalną pojemnością zainicjowaną do zera.

MemoryStream(Byte[])

Inicjuje nowe wystąpienie klasy innej niż możliwość zmiany rozmiaru MemoryStream na podstawie określonej tablicy bajtów.

MemoryStream(Byte[], Boolean)

Inicjuje nowe wystąpienie klasy innej niż możliwość zmiany rozmiaru MemoryStream na podstawie określonej tablicy bajtów z ustawioną właściwością CanWrite .

MemoryStream(Byte[], Int32, Int32)

Inicjuje nowe wystąpienie klasy niezwiązane z MemoryStream możliwością zmiany rozmiaru na podstawie określonego regionu (indeksu) tablicy bajtów.

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

Inicjuje nowe wystąpienie klasy innej niż możliwość zmiany rozmiaru MemoryStream na podstawie określonego regionu tablicy bajtów z ustawioną właściwością CanWrite .

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

Inicjuje nowe wystąpienie MemoryStream klasy na podstawie określonego regionu tablicy bajtów z ustawioną CanWrite właściwością oraz możliwość wywoływania GetBuffer() zestawu określonego.

MemoryStream(Int32)

Inicjuje MemoryStream nowe wystąpienie klasy z rozszerzalną pojemnością zainicjowaną zgodnie z określoną wartością.

Właściwości

CanRead

Pobiera wartość wskazującą, czy bieżący strumień obsługuje odczyt.

CanSeek

Pobiera wartość wskazującą, czy bieżący strumień obsługuje wyszukiwanie.

CanTimeout

Pobiera wartość określającą, czy bieżący strumień może upłynął limit czasu.

(Odziedziczone po Stream)
CanWrite

Pobiera wartość wskazującą, czy bieżący strumień obsługuje zapisywanie.

Capacity

Pobiera lub ustawia liczbę bajtów przydzielonych dla tego strumienia.

Length

Pobiera długość strumienia w bajtach.

Position

Pobiera lub ustawia bieżącą pozycję w strumieniu.

ReadTimeout

Pobiera lub ustawia wartość w milisekundach, która określa, jak długo strumień będzie próbował odczytać przed przekroczeniem limitu czasu.

(Odziedziczone po Stream)
WriteTimeout

Pobiera lub ustawia wartość w milisekundach, która określa, jak długo strumień będzie próbował zapisać przed przekroczeniem limitu czasu.

(Odziedziczone po Stream)

Metody

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

Rozpoczyna asynchroniczną operację odczytu. (Rozważ użycie ReadAsync(Byte[], Int32, Int32, CancellationToken) zamiast tego).

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

Rozpoczyna asynchroniczną operację odczytu. (Rozważ użycie ReadAsync(Byte[], Int32, Int32) zamiast tego).

(Odziedziczone po Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Rozpoczyna asynchroniczną operację zapisu. (Rozważ użycie WriteAsync(Byte[], Int32, Int32, CancellationToken) zamiast tego).

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

Rozpoczyna asynchroniczną operację zapisu. (Rozważ użycie WriteAsync(Byte[], Int32, Int32) zamiast tego).

(Odziedziczone po Stream)
Close()

Zamyka strumień do odczytu i zapisu.

Close()

Zamyka bieżący strumień i zwalnia wszystkie zasoby (takie jak gniazda i dojścia plików) skojarzone z bieżącym strumieniem. Zamiast wywoływać tę metodę, upewnij się, że strumień jest prawidłowo usuwany.

(Odziedziczone po Stream)
CopyTo(Stream)

Odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu. Oba pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów.

(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.

CopyTo(Stream, Int32)

Odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu przy użyciu określonego rozmiaru buforu. Oba pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów.

(Odziedziczone po Stream)
CopyToAsync(Stream)

Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu. Oba pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów.

(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. Obie pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów.

(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. Obie pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów.

(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.

CopyToAsync(Stream, Int32, CancellationToken)

Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu przy użyciu określonego rozmiaru buforu i tokenu anulowania. Obie pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów.

(Odziedziczone po Stream)
CreateObjRef(Type)

Tworzy obiekt zawierający wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikowania się z obiektem zdalnym.

(Odziedziczone po MarshalByRefObject)
CreateWaitHandle()
Nieaktualne.
Nieaktualne.
Nieaktualne.

WaitHandle Przydziela obiekt.

(Odziedziczone po Stream)
Dispose()

Zwalnia wszelkie zasoby używane przez element Stream.

(Odziedziczone po Stream)
Dispose(Boolean)

Zwalnia niezarządzane zasoby używane przez klasę MemoryStream i opcjonalnie zwalnia zarządzane zasoby.

Dispose(Boolean)

Zwalnia zasoby niezarządzane używane przez element Stream i opcjonalnie zwalnia zasoby zarządzane.

(Odziedziczone po Stream)
DisposeAsync()

Asynchronicznie zwalnia niezarządzane zasoby używane przez Streamprogram .

(Odziedziczone po Stream)
EndRead(IAsyncResult)

Czeka na ukończenie oczekującego odczytu asynchronicznego. (Rozważ użycie ReadAsync(Byte[], Int32, Int32, CancellationToken) zamiast tego).

EndRead(IAsyncResult)

Czeka na ukończenie oczekującego odczytu asynchronicznego. (Rozważ użycie ReadAsync(Byte[], Int32, Int32) zamiast tego).

(Odziedziczone po Stream)
EndWrite(IAsyncResult)

Kończy asynchroniczną operację zapisu. (Rozważ użycie WriteAsync(Byte[], Int32, Int32, CancellationToken) zamiast tego).

EndWrite(IAsyncResult)

Kończy asynchroniczną operację zapisu. (Rozważ użycie WriteAsync(Byte[], Int32, Int32) zamiast tego).

(Odziedziczone po Stream)
Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
Flush()

Zastępuje metodę tak, aby żadna Flush() akcja nie została wykonana.

FlushAsync()

Asynchronicznie czyści wszystkie bufory dla tego strumienia i powoduje zapisanie wszystkich buforowanych danych na urządzeniu bazowym.

(Odziedziczone po Stream)
FlushAsync(CancellationToken)

Asynchronicznie czyści wszystkie bufory dla tego strumienia i monitoruje żądania anulowania.

FlushAsync(CancellationToken)

Asynchronicznie czyści wszystkie bufory dla tego strumienia, powoduje zapisanie wszystkich buforowanych danych na urządzeniu źródłowym i monitorowanie żądań anulowania.

(Odziedziczone po Stream)
GetBuffer()

Zwraca tablicę niepodpisanych bajtów, z których utworzono ten strumień.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetLifetimeService()
Nieaktualne.

Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
InitializeLifetimeService()
Nieaktualne.

Uzyskuje obiekt usługi okresu istnienia w celu kontrolowania zasad okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
MemberwiseClone(Boolean)

Tworzy płytkią kopię bieżącego MarshalByRefObject obiektu.

(Odziedziczone po MarshalByRefObject)
ObjectInvariant()

Ten interfejs API obsługuje infrastrukturę produktu i nie jest przeznaczony do użycia bezpośrednio z poziomu kodu.

Zapewnia obsługę programu Contract.

ObjectInvariant()
Nieaktualne.

Zapewnia obsługę programu Contract.

(Odziedziczone po Stream)
Read(Byte[], Int32, Int32)

Odczytuje blok bajtów z bieżącego strumienia i zapisuje dane w buforze.

Read(Span<Byte>)

Odczytuje sekwencję bajtów z bieżącego strumienia pamięci i rozwija pozycję w strumieniu pamięci o liczbę odczytanych bajtów.

Read(Span<Byte>)

Po zastąpieniu w klasie pochodnej odczytuje sekwencję bajtów z bieżącego strumienia i rozwija pozycję w strumieniu według liczby odczytanych bajtów.

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

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia i rozwija pozycję w strumieniu przez liczbę odczytanych bajtów.

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

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia, rozwija pozycję w strumieniu według liczby odczytanych bajtów i monitoruje żądania anulowania.

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.

(Odziedziczone po Stream)
ReadAsync(Memory<Byte>, CancellationToken)

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia pamięci, zapisuje sekwencję na destination, zwiększa pozycję w strumieniu pamięci o liczbę odczytanych bajtów i monitoruje żądania anulowania.

ReadAsync(Memory<Byte>, CancellationToken)

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia, przesuwa pozycję w strumieniu o liczbę odczytanych bajtów i monitoruje żądania anulowania.

(Odziedziczone po Stream)
ReadByte()

Odczytuje bajt z bieżącego strumienia.

Seek(Int64, SeekOrigin)

Ustawia położenie w bieżącym strumieniu na określoną wartość.

SetLength(Int64)

Ustawia długość bieżącego strumienia na określoną wartość.

ToArray()

Zapisuje zawartość strumienia w tablicy bajtów, niezależnie od Position właściwości.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

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

Zwraca tablicę niepodpisanych bajtów, z których utworzono ten strumień. Zwracana wartość wskazuje, czy konwersja powiodła się.

Write(Byte[], Int32, Int32)

Zapisuje blok bajtów do bieżącego strumienia przy użyciu danych odczytanych z buforu.

Write(ReadOnlySpan<Byte>)

Zapisuje sekwencję bajtów zawartych w source bieżącym strumieniu pamięci i rozwija bieżącą pozycję w tym strumieniu pamięci przez liczbę zapisanych bajtów.

Write(ReadOnlySpan<Byte>)

Po zastąpieniu w klasie pochodnej zapisuje sekwencję bajtów do bieżącego strumienia i rozwija bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów.

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

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia i rozwija bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów.

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

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia, przechodzi bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów i monitoruje żądania anulowania.

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

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia, przechodzi bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów i monitoruje żądania anulowania.

(Odziedziczone po Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Asynchronicznie zapisuje sekwencję bajtów zawartych w source bieżącym strumieniu pamięci, zwiększa bieżącą pozycję w tym strumieniu pamięci o liczbę zapisanych bajtów i monitoruje żądania anulowania.

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia, przechodzi bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów i monitoruje żądania anulowania.

(Odziedziczone po Stream)
WriteByte(Byte)

Zapisuje bajt do bieżącego strumienia w bieżącej pozycji.

WriteTo(Stream)

Zapisuje całą zawartość tego strumienia pamięci do innego strumienia.

Jawne implementacje interfejsu

IDisposable.Dispose()

Zwalnia wszelkie zasoby używane przez element Stream.

(Odziedziczone po Stream)

Metody rozszerzania

AsInputStream(Stream)

Konwertuje strumień zarządzany na platformie .NET dla aplikacji Windows Store na strumień wejściowy w środowisko wykonawcze systemu Windows.

AsOutputStream(Stream)

Konwertuje strumień zarządzany na platformie .NET dla aplikacji ze sklepu Windows Store na strumień wyjściowy w środowisko wykonawcze systemu Windows.

AsRandomAccessStream(Stream)

Konwertuje określony strumień na strumień o dostępie losowym.

GetWindowsRuntimeBuffer(MemoryStream)

Zwraca interfejs Windows. Storage. Streams. IBuffer, który reprezentuje tę samą pamięć co określony strumień pamięci.

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.

ConfigureAwait(IAsyncDisposable, Boolean)

Konfiguruje sposób oczekiwania na zadania zwracane z jednorazowego użytku asynchronicznego.

Dotyczy

Zobacz też