MemoryStream Klas

Definitie

Hiermee maakt u een stream waarvan de back-upopslag geheugen is.

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
Overname
MemoryStream
Overname
Kenmerken

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u gegevens kunt lezen en schrijven met behulp van geheugen als back-uparchief.

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

Opmerkingen

De huidige positie van een stroom is de positie waarop de volgende lees- of schrijfbewerking kan plaatsvinden. De huidige positie kan worden opgehaald of ingesteld via de Seek methode. Wanneer er een nieuw exemplaar van MemoryStream wordt gemaakt, wordt de huidige positie ingesteld op nul.

Note

Met dit type wordt de IDisposable interface geïmplementeerd, maar er zijn geen resources om te verwijderen. Dit betekent dat het verwijderen ervan door het rechtstreeks aanroepen van Dispose() of met behulp van een taalconstructie zoals using (in C#) of Using (in Visual Basic) niet nodig is.

Geheugenstromen die zijn gemaakt met een niet-ondertekende bytematrix bieden een niet-resizable stream van de gegevens. Wanneer u een bytematrix gebruikt, kunt u de stroom niet toevoegen of verkleinen, hoewel u de bestaande inhoud mogelijk kunt wijzigen, afhankelijk van de parameters die zijn doorgegeven aan de constructor. Lege geheugenstromen kunnen worden aangepast en kunnen worden geschreven naar en gelezen van.

Als een MemoryStream object wordt toegevoegd aan een ResX-bestand of een .resources-bestand, roept u de GetStream methode tijdens runtime aan om het op te halen.

Als een MemoryStream object wordt geserialiseerd naar een resourcebestand, wordt het object eigenlijk geserialiseerd als een UnmanagedMemoryStream. Dit gedrag biedt betere prestaties, evenals de mogelijkheid om rechtstreeks een aanwijzer naar de gegevens te krijgen zonder methoden te hoeven doorlopen Stream .

Constructors

Name Description
MemoryStream()

Initialiseert een nieuw exemplaar van de MemoryStream klasse met een uitbreidbare capaciteit die is geïnitialiseerd tot nul.

MemoryStream(Byte[], Boolean)

Initialiseert een nieuw niet-resizeerbaar exemplaar van de MemoryStream klasse op basis van de opgegeven bytematrix met de CanWrite eigenschap die is ingesteld zoals opgegeven.

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

Initialiseert een nieuw exemplaar van de MemoryStream klasse op basis van de opgegeven regio van een bytematrix, waarbij de CanWrite eigenschap is ingesteld zoals opgegeven en de mogelijkheid om set aan te roepen GetBuffer() zoals opgegeven.

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

Initialiseert een nieuw niet-resizeerbaar exemplaar van de MemoryStream klasse op basis van de opgegeven regio van een bytematrix, waarbij de CanWrite eigenschap is ingesteld zoals opgegeven.

MemoryStream(Byte[], Int32, Int32)

Initialiseert een nieuw niet-resizeerbaar exemplaar van de MemoryStream klasse op basis van de opgegeven regio (index) van een bytematrix.

MemoryStream(Byte[])

Initialiseert een nieuw niet-resizeerbaar exemplaar van de MemoryStream klasse op basis van de opgegeven bytematrix.

MemoryStream(Int32)

Initialiseert een nieuw exemplaar van de MemoryStream klasse met een uitbreidbare capaciteit die is geïnitialiseerd zoals opgegeven.

Eigenschappen

Name Description
CanRead

Hiermee wordt een waarde opgehaald die aangeeft of de huidige stroom het lezen ondersteunt.

CanSeek

Hiermee wordt een waarde opgehaald die aangeeft of de huidige stroom zoeken ondersteunt.

CanTimeout

Hiermee wordt een waarde opgehaald die bepaalt of er een time-out optreedt voor de huidige stroom.

(Overgenomen van Stream)
CanWrite

Hiermee wordt een waarde opgehaald die aangeeft of de huidige stroom schrijfkracht ondersteunt.

Capacity

Hiermee haalt u het aantal toegewezen bytes voor deze stream op of stelt u dit in.

Length

Hiermee haalt u de lengte van de stream op in bytes.

Position

Hiermee haalt u de huidige positie in de stroom op of stelt u deze in.

ReadTimeout

Hiermee wordt een waarde opgehaald of ingesteld, in milliseconden, die bepaalt hoe lang de stroom probeert te lezen voordat er een time-out optreedt.

(Overgenomen van Stream)
WriteTimeout

Hiermee wordt een waarde opgehaald of ingesteld, in milliseconden, die bepaalt hoe lang de stream probeert te schrijven voordat er een time-out optreedt.

(Overgenomen van Stream)

Methoden

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

Begint een asynchrone leesbewerking. (Overweeg in plaats daarvan om te gebruiken ReadAsync(Byte[], Int32, Int32, CancellationToken) .)

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

Begint een asynchrone leesbewerking. (Overweeg in plaats daarvan om te gebruiken ReadAsync(Byte[], Int32, Int32) .)

(Overgenomen van Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Hiermee wordt een asynchrone schrijfbewerking gestart. (Overweeg in plaats daarvan om te gebruiken WriteAsync(Byte[], Int32, Int32, CancellationToken) .)

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

Hiermee wordt een asynchrone schrijfbewerking gestart. (Overweeg in plaats daarvan om te gebruiken WriteAsync(Byte[], Int32, Int32) .)

(Overgenomen van Stream)
Close()

Hiermee sluit u de stroom voor lezen en schrijven.

Close()

Hiermee sluit u de huidige stroom en worden alle resources (zoals sockets en bestandsingangen) die aan de huidige stroom zijn gekoppeld, vrijgegeven. In plaats van deze methode aan te roepen, moet u ervoor zorgen dat de stream correct wordt verwijderd.

(Overgenomen van Stream)
CopyTo(Stream, Int32)

Leest de bytes uit de huidige geheugenstroom en schrijft deze naar een andere stroom, met behulp van een opgegeven buffergrootte.

CopyTo(Stream, Int32)

Leest de bytes uit de huidige stream en schrijft ze naar een andere stroom, met behulp van een opgegeven buffergrootte. Beide streamsposities worden geavanceerd door het aantal gekopieerde bytes.

(Overgenomen van Stream)
CopyTo(Stream)

Leest de bytes uit de huidige stream en schrijft ze naar een andere stream. Beide streamsposities worden geavanceerd door het aantal gekopieerde bytes.

(Overgenomen van Stream)
CopyToAsync(Stream, CancellationToken)

Asynchroon leest de bytes uit de huidige stream en schrijft deze naar een andere stream met behulp van een opgegeven annuleringstoken. Beide streamsposities worden geavanceerd door het aantal gekopieerde bytes.

(Overgenomen van Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Asynchroon leest alle bytes uit de huidige stream en schrijft deze naar een andere stream, met behulp van een opgegeven buffergrootte en annuleringstoken.

CopyToAsync(Stream, Int32, CancellationToken)

Asynchroon leest de bytes uit de huidige stream en schrijft deze naar een andere stroom, met behulp van een opgegeven buffergrootte en annuleringstoken. Beide streamsposities worden geavanceerd door het aantal gekopieerde bytes.

(Overgenomen van Stream)
CopyToAsync(Stream, Int32)

Asynchroon leest de bytes uit de huidige stream en schrijft deze naar een andere stroom, met behulp van een opgegeven buffergrootte. Beide streamsposities worden geavanceerd door het aantal gekopieerde bytes.

(Overgenomen van Stream)
CopyToAsync(Stream)

Asynchroon leest de bytes uit de huidige stream en schrijft ze naar een andere stream. Beide streamsposities worden geavanceerd door het aantal gekopieerde bytes.

(Overgenomen van Stream)
CreateObjRef(Type)

Hiermee maakt u een object dat alle relevante informatie bevat die nodig is om een proxy te genereren die wordt gebruikt om te communiceren met een extern object.

(Overgenomen van MarshalByRefObject)
CreateWaitHandle()
Verouderd.

Wijst een WaitHandle object toe.

(Overgenomen van Stream)
Dispose()

Alle resources die worden gebruikt door de Stream.

(Overgenomen van Stream)
Dispose(Boolean)

Publiceert de niet-beheerde resources die door de MemoryStream klasse worden gebruikt en brengt eventueel de beheerde resources vrij.

DisposeAsync()

Geeft asynchroon de onbeheerde resources vrij die worden gebruikt door de Stream.

(Overgenomen van Stream)
EndRead(IAsyncResult)

Wacht totdat de asynchrone leesbewerking is voltooid. (Overweeg in plaats daarvan om te gebruiken ReadAsync(Byte[], Int32, Int32, CancellationToken) .)

EndRead(IAsyncResult)

Wacht totdat de asynchrone leesbewerking is voltooid. (Overweeg in plaats daarvan om te gebruiken ReadAsync(Byte[], Int32, Int32) .)

(Overgenomen van Stream)
EndWrite(IAsyncResult)

Hiermee wordt een asynchrone schrijfbewerking beëindigd. (Overweeg in plaats daarvan om te gebruiken WriteAsync(Byte[], Int32, Int32, CancellationToken) .)

EndWrite(IAsyncResult)

Hiermee wordt een asynchrone schrijfbewerking beëindigd. (Overweeg in plaats daarvan om te gebruiken WriteAsync(Byte[], Int32, Int32) .)

(Overgenomen van Stream)
Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
Flush()

Hiermee wordt de Flush() methode overschreven, zodat er geen actie wordt uitgevoerd.

FlushAsync()

Asynchroon wist alle buffers voor deze stroom en zorgt ervoor dat eventuele gebufferde gegevens naar het onderliggende apparaat worden geschreven.

(Overgenomen van Stream)
FlushAsync(CancellationToken)

Asynchroon wist alle buffers voor deze stream en bewaakt annuleringsaanvragen.

GetBuffer()

Retourneert de matrix van niet-ondertekende bytes waaruit deze stream is gemaakt.

GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetLifetimeService()

Hiermee haalt u het huidige levensduurserviceobject op waarmee het levensduurbeleid voor dit exemplaar wordt beheerd.

(Overgenomen van MarshalByRefObject)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
InitializeLifetimeService()

Hiermee haalt u een levensduurserviceobject op om het levensduurbeleid voor dit exemplaar te beheren.

(Overgenomen van MarshalByRefObject)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
MemberwiseClone(Boolean)

Hiermee maakt u een ondiepe kopie van het huidige MarshalByRefObject object.

(Overgenomen van MarshalByRefObject)
ObjectInvariant()

Deze API ondersteunt de productinfrastructuur en is niet bedoeld om rechtstreeks vanuit de code te gebruiken.

Biedt ondersteuning voor een Contract.

ObjectInvariant()
Verouderd.

Biedt ondersteuning voor een Contract.

(Overgenomen van Stream)
Read(Byte[], Int32, Int32)

Leest een blok bytes uit de huidige stroom en schrijft de gegevens naar een buffer.

Read(Span<Byte>)

Hiermee leest u een reeks bytes uit de huidige geheugenstroom en wordt de positie binnen de geheugenstroom verplaatst door het aantal gelezen bytes.

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

Asynchroon leest een reeks bytes uit de huidige stroom, verplaatst de positie binnen de stream door het aantal gelezen bytes en bewaakt annuleringsaanvragen.

ReadAsync(Byte[], Int32, Int32)

Asynchroon leest een reeks bytes uit de huidige stroom en wordt de positie binnen de stream verplaatst door het aantal gelezen bytes.

(Overgenomen van Stream)
ReadAsync(Memory<Byte>, CancellationToken)

Asynchroon leest een reeks bytes uit de huidige geheugenstroom, schrijft de reeks naar destination, verplaatst de positie in de geheugenstroom door het aantal gelezen bytes en bewaakt annuleringsaanvragen.

ReadByte()

Leest een byte uit de huidige stroom.

Seek(Int64, SeekOrigin)

Hiermee stelt u de positie in de huidige stroom in op de opgegeven waarde.

SetLength(Int64)

Hiermee stelt u de lengte van de huidige stroom in op de opgegeven waarde.

ToArray()

Hiermee schrijft u de inhoud van de stream naar een bytematrix, ongeacht de Position eigenschap.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)
TryGetBuffer(ArraySegment<Byte>)

Retourneert de matrix van niet-ondertekende bytes waaruit deze stream is gemaakt. De retourwaarde geeft aan of de conversie is geslaagd.

Write(Byte[], Int32, Int32)

Hiermee schrijft u een blok bytes naar de huidige stroom met behulp van gegevens die uit een buffer worden gelezen.

Write(ReadOnlySpan<Byte>)

Hiermee schrijft u de reeks bytes in source de huidige geheugenstroom en wordt de huidige positie binnen deze geheugenstroom verplaatst door het aantal geschreven bytes.

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

Asynchroon schrijft een reeks bytes naar de huidige stroom, verplaatst de huidige positie binnen deze stream door het aantal geschreven bytes en bewaakt annuleringsaanvragen.

WriteAsync(Byte[], Int32, Int32)

Asynchroon schrijft een reeks bytes naar de huidige stroom en wordt de huidige positie binnen deze stroom verplaatst door het aantal geschreven bytes.

(Overgenomen van Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Asynchroon schrijft de reeks bytes in source de huidige geheugenstroom, gaat de huidige positie binnen deze geheugenstroom verder met het aantal geschreven bytes en bewaakt annuleringsaanvragen.

WriteByte(Byte)

Hiermee schrijft u een byte naar de huidige stroom op de huidige positie.

WriteTo(Stream)

Hiermee schrijft u de volledige inhoud van deze geheugenstroom naar een andere stream.

Expliciete interface-implementaties

Name Description
IDisposable.Dispose()

Alle resources die worden gebruikt door de Stream.

(Overgenomen van Stream)

Extensiemethoden

Name Description
AsInputStream(Stream)

Converteert een beheerde stream in de .NET voor Windows Store-apps naar een invoerstroom in de Windows Runtime.

AsOutputStream(Stream)

Converteert een beheerde stream in de .NET voor Windows Store-apps naar een uitvoerstroom in de Windows Runtime.

AsRandomAccessStream(Stream)

Converteert de opgegeven stream naar een stream voor willekeurige toegang.

ConfigureAwait(IAsyncDisposable, Boolean)

Hiermee configureert u hoe wacht op de taken die worden geretourneerd op basis van een asynchroon wegwerp, worden uitgevoerd.

GetWindowsRuntimeBuffer(MemoryStream, Int32, Int32)

Retourneert een Windows. Storage.Streams.IBuffer-interface die een regio in het geheugen vertegenwoordigt die de opgegeven geheugenstroom vertegenwoordigt.

GetWindowsRuntimeBuffer(MemoryStream)

Retourneert een Windows. Storage.Streams.IBuffer-interface die hetzelfde geheugen vertegenwoordigt als de opgegeven geheugenstroom.

Van toepassing op

Zie ook