MemoryStream Klasa

Definicja

Tworzy strumień, którego magazyn zapasowy to pamięć.

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 kopii zapasowych.

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ć kolejna operacja odczytu lub zapisu. Bieżące położenie można pobrać lub ustawić za pomocą Seek metody . Po utworzeniu MemoryStream nowego wystąpienia jest ustawione bieżące położenie na zero.

Note

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

Strumienie pamięci utworzone z niepodpisaną tablicą bajtów zapewniają strumień danych niemożliwy do zmiany rozmiaru. W przypadku używania 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 można zmieniać rozmiar 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, zostanie on faktycznie serializowany jako UnmanagedMemoryStream. To zachowanie zapewnia lepszą wydajność, a także możliwość bezpośredniego pobierania wskaźnika do danych bez konieczności przechodzenia przez Stream metody.

Konstruktory

Nazwa Opis
MemoryStream()

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

MemoryStream(Byte[], Boolean)

Inicjuje nowe wystąpienie MemoryStream klasy niezróżnialnej na podstawie określonej 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ą właściwością oraz możliwość wywoływania CanWrite zestawu zgodnie z GetBuffer() określonymi.

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

Inicjuje nowe, niezróżnialne wystąpienie MemoryStream klasy na podstawie określonego regionu tablicy bajtów z ustawioną właściwością CanWrite zgodnie z określoną wartością.

MemoryStream(Byte[], Int32, Int32)

Inicjuje nowe niezróżnialne wystąpienie MemoryStream klasy na podstawie określonego regionu (indeksu) tablicy bajtów.

MemoryStream(Byte[])

Inicjuje nowe niezróżnialne wystąpienie MemoryStream klasy na podstawie określonej tablicy bajtów.

MemoryStream(Int32)

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

Właściwości

Nazwa Opis
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żące położenie w strumieniu.

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.

(Odziedziczone po Stream)
WriteTimeout

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

(Odziedziczone po Stream)

Metody

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

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

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

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

(Odziedziczone po Stream)
CopyTo(Stream)

Odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu. Obie 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, 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)
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)

Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu. 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()
Przestarzałe.
Przestarzałe.
Przestarzałe.

WaitHandle Przydziela obiekt.

(Odziedziczone po Stream)
Dispose()

Zwalnia wszystkie zasoby używane przez program Stream.

(Odziedziczone po Stream)
Dispose(Boolean)

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

DisposeAsync()

Asynchronicznie zwalnia niezarządzane zasoby używane przez program Stream.

(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 określony obiekt jest równy bieżącemu obiektowi.

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

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()
Przestarzałe.

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

(Odziedziczone po MarshalByRefObject)
GetType()

Pobiera Type bieżącego wystąpienia.

(Odziedziczone po Object)
InitializeLifetimeService()
Przestarzałe.

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

(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ę elementu Contract.

ObjectInvariant()
Przestarzałe.

Zapewnia obsługę elementu 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 przez liczbę odczytanych bajtów.

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)

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

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

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia pamięci, zapisuje sekwencję w destinationelemencie , rozwija pozycję w strumieniu pamięci przez liczbę odczytanych bajtów i monitoruje żądania anulowania.

ReadAtLeast(Span<Byte>, Int32, Boolean)

Odczytuje co najmniej minimalną liczbę bajtów z bieżącego strumienia i rozwija pozycję w strumieniu według liczby odczytanych bajtów.

(Odziedziczone po Stream)
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken)

Asynchronicznie odczytuje co najmniej minimalną liczbę bajtów z bieżącego strumienia, zwiększa pozycję w strumieniu przez liczbę odczytanych bajtów i monitoruje żądania anulowania.

(Odziedziczone po Stream)
ReadByte()

Odczytuje bajt z bieżącego strumienia.

ReadExactly(Byte[], Int32, Int32)

Odczytuje count liczbę bajtów z bieżącego strumienia i rozwija pozycję w strumieniu.

(Odziedziczone po Stream)
ReadExactly(Span<Byte>)

Odczytuje bajty z bieżącego strumienia i przechodzi do momentu wypełnienia pozycji w strumieniu buffer .

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

Asynchronicznie odczytuje count liczbę bajtów z bieżącego strumienia, rozwija pozycję w strumieniu i monitoruje żądania anulowania.

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

Asynchronicznie odczytuje bajty z bieżącego strumienia, przechodzi pozycję w strumieniu do buffer momentu wypełnienia i monitoruje żądania anulowania.

(Odziedziczone po Stream)
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ń. Wartość zwracana wskazuje, czy konwersja zakończyła się pomyślnie.

Write(Byte[], Int32, Int32)

Zapisuje blok bajtów w bieżącym strumieniu przy użyciu danych odczytanych z buforu.

Write(ReadOnlySpan<Byte>)

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

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

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

WriteAsync(Byte[], Int32, Int32)

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

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

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

WriteByte(Byte)

Zapisuje bajt do bieżącego strumienia w bieżącym położeniu.

WriteTo(Stream)

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

Jawne implementacje interfejsu

Nazwa Opis
IDisposable.Dispose()

Zwalnia wszystkie zasoby używane przez program Stream.

(Odziedziczone po Stream)

Metody rozszerzania

Nazwa Opis
AsInputStream(Stream)

Konwertuje strumień zarządzany na platformie .NET dla aplikacji ze Sklepu Windows na strumień wejściowy w środowisku uruchomieniowym systemu Windows.

AsOutputStream(Stream)

Konwertuje strumień zarządzany na platformie .NET dla aplikacji ze Sklepu Windows na strumień wyjściowy w środowisku uruchomieniowym systemu Windows.

AsRandomAccessStream(Stream)

Konwertuje określony strumień na strumień dostępu losowego.

ConfigureAwait(IAsyncDisposable, Boolean)

Konfiguruje, w jaki sposób będą wykonywane oczekiwania na zadania zwrócone z asynchronicznego jednorazowego użytku.

CopyToAsync(Stream, PipeWriter, CancellationToken)

Asynchronicznie odczytuje bajty z obiektu Stream i zapisuje je w określonym PipeWriterobiekcie przy użyciu tokenu anulowania.

GetWindowsRuntimeBuffer(MemoryStream, Int32, Int32)

Zwraca Windows. Storage.Streams.IBuffer, który reprezentuje region w pamięci reprezentowanej przez określony strumień pamięci.

GetWindowsRuntimeBuffer(MemoryStream)

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

Dotyczy

Zobacz też