MemoryStream Classe

Définition

Crée un flux dont le magasin de stockage est la mémoire.

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
Héritage
MemoryStream
Héritage
Attributs

Exemples

L’exemple de code suivant montre comment lire et écrire des données à l’aide de la mémoire en tant que magasin de stockage.

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

Remarques

La position actuelle d’un flux est la position à laquelle la prochaine opération de lecture ou d’écriture peut avoir lieu. La position actuelle peut être récupérée ou définie par le biais de la Seek méthode. Quand une nouvelle instance de MemoryStream est créée, la position actuelle est définie sur zéro.

Notes

Ce type implémente l’interface IDisposable, mais il n’a en fait aucune ressource à supprimer. Cela signifie que sa suppression en appelant directement Dispose() ou en utilisant une construction de langage telle que using (en C#) ou Using (en Visual Basic) n’est pas nécessaire.

Les flux de mémoire créés avec un tableau d’octets non signés fournissent un flux de données non redimensionnable. Lors de l’utilisation d’un tableau d’octets, vous ne pouvez ni ajouter ni réduire le flux, bien que vous puissiez modifier le contenu existant en fonction des paramètres passés dans le constructeur. Les flux de mémoire vides sont redimensionnables et peuvent être écrits et lus à partir de.

Si un MemoryStream objet est ajouté à un fichier resx ou à un fichier. Resources, appelez la GetStream méthode au moment de l’exécution pour la récupérer.

Si un MemoryStream objet est sérialisé dans un fichier de ressources, il sera en fait sérialisé en tant que UnmanagedMemoryStream . Ce comportement offre de meilleures performances, ainsi que la possibilité d’obtenir un pointeur vers les données directement, sans avoir à passer par des Stream méthodes.

Constructeurs

MemoryStream()

Initialise une nouvelle instance de la classe MemoryStream avec une capacité initialisée à zéro et pouvant être développée.

MemoryStream(Byte[])

Initialise une nouvelle instance non redimensionnable de la classe MemoryStream en fonction du tableau d'octets spécifié.

MemoryStream(Byte[], Boolean)

Initialise une nouvelle instance non redimensionnable de la classe MemoryStream en fonction du tableau d'octets spécifié, avec la propriété CanWrite spécifiée.

MemoryStream(Byte[], Int32, Int32)

Initialise une nouvelle instance non redimensionnable de la classe MemoryStream en fonction de la région (index) spécifiée d'un tableau d'octets.

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

Initialise une nouvelle instance non redimensionnable de la classe MemoryStream en fonction de la région spécifiée d'un tableau d'octets, avec la propriété CanWrite spécifiée.

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

Initialise une nouvelle instance de la classe MemoryStream en fonction de la région spécifiée d'un tableau d'octets, avec la propriété CanWrite spécifiée et la possibilité d'appeler GetBuffer() comme spécifié.

MemoryStream(Int32)

Initialise une nouvelle instance de la classe MemoryStream avec une capacité extensible initialisée à la valeur spécifiée.

Propriétés

CanRead

Obtient une valeur indiquant si le flux actuel prend en charge la lecture.

CanSeek

Obtient une valeur indiquant si le flux actuel prend en charge la recherche.

CanTimeout

Obtient une valeur qui détermine si le flux actuel peut dépasser le délai d'attente.

(Hérité de Stream)
CanWrite

Obtient une valeur indiquant si le flux actuel prend en charge l'écriture.

Capacity

Obtient ou définit le nombre d'octets alloués pour ce flux.

Length

Obtient la longueur du flux en octets.

Position

Obtient ou définit la position actuelle dans le flux.

ReadTimeout

Obtient ou définit une valeur, exprimée en millisecondes, qui définit la durée pendant laquelle le flux tentera d’effectuer la lecture avant dépassement du délai d’attente.

(Hérité de Stream)
WriteTimeout

Obtient ou définit une valeur, exprimée en millisecondes, qui définit la durée pendant laquelle le flux tentera d’écrire des données avant l’expiration du délai d’attente.

(Hérité de Stream)

Méthodes

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

Débute une opération de lecture asynchrone. (Utilisez ReadAsync(Byte[], Int32, Int32, CancellationToken) à la place.)

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

Débute une opération de lecture asynchrone. (Utilisez ReadAsync(Byte[], Int32, Int32) à la place.)

(Hérité de Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Débute une opération d'écriture asynchrone. (Utilisez WriteAsync(Byte[], Int32, Int32, CancellationToken) à la place.)

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

Débute une opération d'écriture asynchrone. (Utilisez WriteAsync(Byte[], Int32, Int32) à la place.)

(Hérité de Stream)
Close()

Ferme le flux pour la lecture et l’écriture.

Close()

Ferme le flux actuel et libère toutes les ressources (comme les sockets et les handles de fichiers) associées à celui-ci. Au lieu d'appeler cette méthode, assurez-vous que le flux est correctement supprimé.

(Hérité de Stream)
CopyTo(Stream)

Lit les octets du flux actuel et les écrit dans un autre flux.

(Hérité de Stream)
CopyTo(Stream, Int32)

Lit les octets du flux mémoire actuel et les écrit dans un autre flux mémoire, en utilisant une taille de mémoire tampon spécifiée.

CopyTo(Stream, Int32)

Lit tous les octets du flux actuel et les écrit dans un autre flux, en utilisant une taille de mémoire tampon spécifiée.

(Hérité de Stream)
CopyToAsync(Stream)

Lit de façon asynchrone tous les octets du flux actuel et les écrit dans un autre flux.

(Hérité de Stream)
CopyToAsync(Stream, CancellationToken)

Lit de façon asynchrone les octets du flux actuel et les écrit dans un autre flux, en utilisant un jeton d’annulation spécifié.

(Hérité de Stream)
CopyToAsync(Stream, Int32)

Lit de façon asynchrone tous les octets du flux actuel et les écrit dans un autre flux, en utilisant une taille de mémoire tampon spécifiée.

(Hérité de Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Lit de façon asynchrone tous les octets du flux actuel et les écrit dans un autre flux, en utilisant une taille de mémoire tampon et un jeton d'annulation spécifiés.

CopyToAsync(Stream, Int32, CancellationToken)

Lit de façon asynchrone les octets du flux actuel et les écrit dans un autre flux, en utilisant une taille de mémoire tampon et d'un jeton d'annulation spécifiés.

(Hérité de Stream)
CreateObjRef(Type)

Crée un objet contenant toutes les informations appropriées requises pour générer un proxy permettant de communiquer avec un objet distant.

(Hérité de MarshalByRefObject)
CreateWaitHandle()
Obsolète.
Obsolète.

Alloue un objet WaitHandle.

(Hérité de Stream)
Dispose()

Libère toutes les ressources utilisées par Stream.

(Hérité de Stream)
Dispose(Boolean)

Libère les ressources non managées utilisées par la classe MemoryStream et libère éventuellement les ressources managées.

Dispose(Boolean)

Libère les ressources non managées utilisées par Stream et libère éventuellement les ressources managées.

(Hérité de Stream)
DisposeAsync()

Libère de façon asynchrone les ressources non managées utilisées par Stream.

(Hérité de Stream)
EndRead(IAsyncResult)

Attend que la requête asynchrone en attente se termine. (Utilisez ReadAsync(Byte[], Int32, Int32, CancellationToken) à la place.)

EndRead(IAsyncResult)

Attend que la requête asynchrone en attente se termine. (Utilisez ReadAsync(Byte[], Int32, Int32) à la place.)

(Hérité de Stream)
EndWrite(IAsyncResult)

Termine une opération d'écriture asynchrone. (Utilisez WriteAsync(Byte[], Int32, Int32, CancellationToken) à la place.)

EndWrite(IAsyncResult)

Termine une opération d'écriture asynchrone. (Utilisez WriteAsync(Byte[], Int32, Int32) à la place.)

(Hérité de Stream)
Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
Flush()

Remplace la méthode Flush() afin qu'aucune action ne soit effectuée.

FlushAsync()

Efface de façon asynchrone toutes les mémoires tampons pour ce flux et provoque l'écriture des données mises en mémoire tampon sur l'appareil sous-jacent.

(Hérité de Stream)
FlushAsync(CancellationToken)

Efface de façon asynchrone toutes les mémoires tampons pour ce flux et surveille les demandes d'annulation.

FlushAsync(CancellationToken)

Efface de façon asynchrone toutes les mémoires tampons pour ce flux, provoque l'écriture des données mises en mémoire tampon sur l'appareil sous-jacent et surveille les requêtes d'annulation.

(Hérité de Stream)
GetBuffer()

Retourne le tableau d'octets non signés à partir duquel ce flux a été créé.

GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetLifetimeService()
Obsolète.

Récupère l'objet de service de durée de vie en cours qui contrôle la stratégie de durée de vie de cette instance.

(Hérité de MarshalByRefObject)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
InitializeLifetimeService()
Obsolète.

Obtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance.

(Hérité de MarshalByRefObject)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
MemberwiseClone(Boolean)

Crée une copie superficielle de l'objet MarshalByRefObject actuel.

(Hérité de MarshalByRefObject)
ObjectInvariant()

Cette API prend en charge l'infrastructure du produit et n'est pas destinée à être utilisée directement à partir de votre code.

Assure la prise en charge d'un Contract.

ObjectInvariant()
Obsolète.

Assure la prise en charge d'un Contract.

(Hérité de Stream)
Read(Byte[], Int32, Int32)

Lit un bloc d'octets à partir du flux actuel et écrit les données dans une mémoire tampon.

Read(Span<Byte>)

Lit une séquence d'octets dans le flux mémoire actuel et avance la position dans le flux mémoire du nombre d'octets lus.

Read(Span<Byte>)

En cas de remplacement dans une classe dérivée, lit une séquence d'octets dans le flux actuel et avance la position dans le flux du nombre d'octets lus.

(Hérité de Stream)
ReadAsync(Byte[], Int32, Int32)

Lit de façon asynchrone une séquence d'octets dans le flux actuel et avance la position dans le flux du nombre d'octets lus.

(Hérité de Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Lit de façon asynchrone une séquence d'octets dans le flux actuel, avance la position dans le flux du nombre d'octets lus et surveille les demandes d'annulation.

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

Lit de façon asynchrone une séquence d'octets dans le flux actuel, avance la position dans le flux du nombre d'octets lus et surveille les demandes d'annulation.

(Hérité de Stream)
ReadAsync(Memory<Byte>, CancellationToken)

Lit de façon asynchrone une séquence d’octets dans le flux de mémoire actuel, écrit la séquence dans destination, avance la position dans le flux mémoire du nombre d’octets lus et supervise les demandes d’annulation.

ReadAsync(Memory<Byte>, CancellationToken)

Lit de façon asynchrone une séquence d'octets dans le flux actuel, avance la position dans le flux du nombre d'octets lus et surveille les demandes d'annulation.

(Hérité de Stream)
ReadByte()

Lit un octet dans le flux actuel.

Seek(Int64, SeekOrigin)

Définit la position dans le flux actuel à la valeur spécifiée.

SetLength(Int64)

Définit la longueur du flux actuel à la valeur spécifiée.

ToArray()

Écrit le contenu du flux dans un tableau d'octets, indépendamment de la propriété Position.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)
TryGetBuffer(ArraySegment<Byte>)

Retourne le tableau d'octets non signés à partir duquel ce flux a été créé. La valeur de retour indique si la conversion a réussi.

Write(Byte[], Int32, Int32)

Écrit un bloc d'octets dans le flux actuel en utilisant des données lues dans une mémoire tampon.

Write(ReadOnlySpan<Byte>)

Écrit une séquence d’octets de l’élément source dans le flux de mémoire actuel et avance la position actuelle dans ce flux de mémoire du nombre d’octets écrits.

Write(ReadOnlySpan<Byte>)

En cas de remplacement dans une classe dérivée, écrit une séquence d'octets dans le flux actuel et avance la position actuelle dans ce flux du nombre d'octets écrits.

(Hérité de Stream)
WriteAsync(Byte[], Int32, Int32)

Écrit de façon asynchrone une séquence d'octets dans le flux actuel et avance la position actuelle dans le flux du nombre d'octets écrits.

(Hérité de Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Écrit de façon asynchrone une séquence d'octets dans le flux actuel, avance la position actuelle dans ce flux du nombre d'octets écrits et surveille les demandes d'annulation.

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

Écrit de façon asynchrone une séquence d'octets dans le flux actuel, avance la position actuelle dans ce flux du nombre d'octets écrits et surveille les demandes d'annulation.

(Hérité de Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Écrit de façon asynchrone la séquence d’octets contenue dans source dans le flux mémoire, avance la position actuelle dans ce flux mémoire du nombre d’octets écrits et supervise les demandes d’annulation.

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Écrit de façon asynchrone une séquence d'octets dans le flux actuel, avance la position actuelle dans ce flux du nombre d'octets écrits et surveille les demandes d'annulation.

(Hérité de Stream)
WriteByte(Byte)

Écrit un octet à la position actuelle dans le flux actuel.

WriteTo(Stream)

Écrit le contenu complet de ce flux de mémoire dans un autre flux.

Implémentations d’interfaces explicites

IDisposable.Dispose()

Libère toutes les ressources utilisées par Stream.

(Hérité de Stream)

Méthodes d’extension

AsInputStream(Stream)

Convertit un flux managé dans .NET pour les applications du Windows Store en un flux d’entrée Windows Runtime.

AsOutputStream(Stream)

Convertit un flux managé dans .NET pour les applications du Windows Store en un flux de sortie Windows Runtime.

AsRandomAccessStream(Stream)

Convertit le flux spécifié en flux d'accès aléatoire.

GetWindowsRuntimeBuffer(MemoryStream)

Retourne une interface Windows.Storage.Streams.IBuffer qui représente la même mémoire que celle du flux de mémoire spécifié.

GetWindowsRuntimeBuffer(MemoryStream, Int32, Int32)

Retourne une interface Windows.Storage.Streams.IBuffer qui représente une zone dans la mémoire que le flux de mémoire spécifié représente.

ConfigureAwait(IAsyncDisposable, Boolean)

Configure la façon dont les attentes sur les tâches retournées à partir d’un élément supprimable asynchrone sont effectuées.

S’applique à

Voir aussi