Cette documentation est archivée et n’est pas conservée.

Stream, classe

Donne une vue générique d'une séquence d'octets.

Espace de noms : System.IO
Assembly : mscorlib (dans mscorlib.dll)

[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public abstract class Stream : MarshalByRefObject, IDisposable
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public abstract class Stream extends MarshalByRefObject implements IDisposable
SerializableAttribute 
ComVisibleAttribute(true) 
public abstract class Stream extends MarshalByRefObject implements IDisposable

Pour obtenir un exemple de création de fichier et d'écriture de texte dans un fichier, consultez Comment : écrire du texte dans un fichier. Pour obtenir un exemple de lecture de texte à partir d'un fichier, consultez Comment : lire du texte dans un fichier. Pour obtenir un exemple de lecture et d'écriture dans un fichier binaire, consultez Comment : lire et écrire dans un fichier de données créé récemment.

Les flux impliquent trois opérations fondamentales :

  1. Vous pouvez lire à partir des flux. La lecture est le transfert de données d'un flux vers une structure de données tel qu'un tableau d'octets.

  2. Vous pouvez écrire dans les flux. L'écriture est le transfert de données d'une structure de données vers un flux.

  3. Les flux peuvent prendre en charge la recherche. La recherche consiste à envoyer une requête concernant la position actuelle dans un flux et à modifier cette dernière. La fonctionnalité de recherche dépend du type de magasin de sauvegarde du flux. Par exemple, les flux de réseau n'ont pas de concept unifié pour une position actuelle et ne prennent donc généralement pas en charge la recherche.

Stream est la classe de base abstraite de tous les flux. Un flux est une abstraction d'une séquence d'octets, telle qu'un fichier, un périphérique d'entrée/sortie, un canal de communication à processus interne, ou un socket TCP/IP. La classe Stream et ses classes dérivées donnent une vue générique de ces différents types d'entrée et de sortie, isolant le programmeur des détails spécifiques au système d'exploitation et aux périphériques sous-jacents.

Selon la source de données sous-jacente ou le référentiel, les flux peuvent prendre en charge certaines de ces fonctionnalités. Une application peut envoyer une requête à un flux concernant ses fonctionnalités en utilisant les propriétés CanRead, CanWrite et CanSeek.

Les méthodes Read et Write lisent et écrivent les données dans divers formats. Pour les flux qui prennent la recherche en charge, utilisez les méthodes Seek et SetLength ainsi que les propriétés Position et Length pour envoyer une requête concernant la position actuelle et la longueur d'un flux et les modifier.

Certaines implémentations de flux effectuent la mise en mémoire tampon locale des données sous-jacentes afin d'améliorer la performance. Pour ces flux, la méthode Flush peut être utilisée pour effacer les mémoires tampons internes et assurer l'écriture de toutes les données dans la source de données sous-jacente ou le référentiel.

Le fait d'appeler Close sur Stream vide les données mises dans la mémoire tampon, en appelant Flush pour vous. Close libère également les ressources du système d'exploitation, telles que les handles de fichiers, les connexions réseau ou la mémoire utilisée pour une mise en mémoire tampon interne. La classe BufferedStream offre la possibilité d'encapsuler un flux mis en mémoire tampon autour d'un autre flux afin d'améliorer la performance de lecture et d'écriture.

Si vous voulez un flux sans magasin de sauvegarde (également appelé compartiment de bits), utilisez Null.

Remarques à l'attention des implémenteurs Lors de l'implémentation d'une classe dérivée de Stream, vous devez fournir des implémentations pour les méthodes Read et Write. Les méthodes asynchrones BeginRead, EndRead, BeginWrite et EndWrite sont implémentées à l'aide des méthodes synchrones Read et Write. De même, vos implémentations de Read et Write fonctionneront correctement avec les méthodes asynchrones. Les implémentations par défaut de ReadByte et WriteByte créent un nouveau tableau d'octets à un seul élément puis appellent vos implémentations de Read et Write. Si la classe dérive de Stream et que vous avez une mémoire tampon d'octets interne, il est vivement recommandé de substituer ces méthodes pour y accéder afin d'améliorer les performances. Vous devez également fournir des implémentations de CanRead, CanSeek, CanWrite, Flush, Length, Position, Seek et SetLength. Ne substituez pas la méthode Close ; placez plutôt toute la logique de nettoyage de flux dans la méthode Dispose. Pour plus d'informations, consultez Implémentation d'une méthode Dispose.

RubriqueEmplacement
Comment : écrire du texte dans un fichier.NET Framework : notions de base de la programmation
Comment : lire du texte dans un fichier.NET Framework : notions de base de la programmation
Comment : lire du texte dans un fichier.NET Framework : notions de base de la programmation
Comment : écrire du texte dans un fichier.NET Framework : notions de base de la programmation

Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

.NET Framework

Prise en charge dans : 2.0, 1.1, 1.0

.NET Compact Framework

Prise en charge dans : 2.0, 1.0
Afficher: