Partager via


E/S de fichier de base

La classe abstraite de base Stream prend en charge la lecture et l'écriture d'octets. La classe Stream intègre la prise en charge asynchrone. Ses implémentations par défaut définissent les opérations de lecture et d'écriture synchrones dans la limite des méthodes asynchrones correspondantes, et inversement.

Toutes les classes qui représentent des flux héritent de la classe Stream. La classe Stream et ses classes dérivées donnent une vue générique des sources de données et des référentiels, isolant ainsi le programmeur des détails propres au système d'exploitation et aux périphériques sous-jacents.

Les flux impliquent trois opérations fondamentales :

  • Il est possible de lire les flux. La lecture est le transfert de données d'un flux vers une structure de données tel qu'un tableau d'octets.

  • Il est possible d'écrire les flux. L'écriture désigne le transfert de données d'une source de données vers un flux.

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

Selon la source de données sous-jacente ou le référentiel, les flux peuvent prendre en charge certaines de ces fonctionnalités. Par exemple, NetworkStreams ne prend pas en charge la recherche. Les propriétés CanRead, CanWrite et CanSeek de Stream et de ses classes dérivées déterminent les opérations prises en charge par différents flux de données.

Pour obtenir la liste des tâches d'E/S courantes, consultez Tâches d'E/S courantes.

RemarqueRemarque

Les utilisateurs de Visual Basic peuvent choisir d'utiliser les méthodes et les propriétés fournies par la classe Microsoft.VisualBasic.FileIO.FileSystem pour les E/S de fichiers.

Classes utilisées pour les E/S de fichier

Directory fournit des méthodes statiques pour la création, le déplacement et l'énumération dans les répertoires et les sous-répertoires. La classe DirectoryInfo fournit des méthodes d'instance.

DirectoryInfo fournit des méthodes d'instance pour la création, le déplacement et l'énumération dans les répertoires et les sous-répertoires. La classe Directory fournit des méthodes statiques.

DriveInfo fournit des méthodes d'instance pour accéder aux informations relatives à un lecteur.

File fournit des méthodes statiques pour créer, copier, supprimer, déplacer et ouvrir des fichiers et facilite la création de FileStream. La classe FileInfo fournit des méthodes d'instance.

FileInfo fournit des méthodes d'instance pour créer, copier, supprimer, déplacer et ouvrir des fichiers et facilite la création de FileStream. La classe File fournit des méthodes statiques.

FileStream prend en charge l'accès aléatoire aux fichiers via la méthode Seek. Par défaut, FileStream ouvre les fichiers de façon synchrone, mais cette classe prend également en charge les opérations asynchrones. File contient des méthodes statiques et FileInfo des méthodes d'instance.

FileSystemInfo est la classe de base abstraite de FileInfo et DirectoryInfo.

Path fournit des méthodes et des propriétés pour le traitement des chaînes de répertoire entre plateformes.

DeflateStream fournit des méthodes et des propriétés pour compresser et décompresser des flux à l'aide de l'algorithme Deflate.

GZipStream fournit des méthodes et des propriétés pour compresser et décompresser des flux. Par défaut, cette classe utilise le même algorithme que la classe DeflateStream mais elle peut être étendue pour utiliser d'autres formats de compression.

SerialPort fournit des méthodes et des propriétés pour contrôler une ressource de fichier de port série.

File, FileInfo, DriveInfo, Path, Directory, et DirectoryInfo sont des classes sealed (NotInheritable en Visual Basic). Vous pouvez créer de nouvelles instances de ces classes, mais elles ne peuvent pas avoir de classes dérivées.

Classes utilisées pour lire et écrire dans des flux

Les classes BinaryReader et BinaryWriter lisent les chaînes encodées et les types de données primitifs à partir de Streams ou les y écrivent.

StreamReader lit les caractères à partir de Streams, en utilisant Encoding pour convertir les caractères en octets et inversement. StreamReader possède un constructeur qui vérifie quel est l'encodage correct d'un flux donné, à partir de la présence d'un préambule spécifique à l'encodage, tel qu'une marque d'ordre d'octet.

StreamWriter écrit des caractères dans Streams, en utilisant Encoding pour les convertir en octets.

StringReader lit les caractères à partir de Strings. Comme StringReader permet de traiter Strings avec la même API, votre sortie peut être un Stream, dans quelque encodage que ce soit, ou une String.

StringWriter écrit les caractères dans Strings. Comme StringWriter permet de traiter Strings avec la même API, votre sortie peut être un Stream, dans quelque encodage que ce soit, ou une String.

TextReader est la classe abstraite de base de StreamReader et StringReader. Alors que les implémentations de la classe abstraite Stream sont destinées aux entrées et sorties d'octets, celles de TextReader sont conçues pour les sorties de caractères Unicode.

TextWriter est la classe abstraite de base de StreamWriter et StringWriter. Alors que les implémentations de la classe abstraite Stream sont destinées aux entrées et sorties d'octets, celles de TextWriter sont conçues pour les entrées de caractères Unicode.

Classes Stream d'E/S courantes

La classe BufferedStream est une classe Stream qui ajoute la mise en mémoire tampon à une autre classe Stream telle que NetworkStream. (FileStream possède déjà la mise en mémoire tampon en interne et MemoryStream ne nécessite pas de mise en mémoire tampon). BufferedStream peut être composé à partir de certains types de flux pour améliorer les performances de lecture et d'écriture. Une mémoire tampon est un bloc d'octets en mémoire, utilisé pour mettre des données en cache, afin de réduire le nombre d'appels adressés au système d'exploitation.

La classe CryptoStream lie les flux de données aux transformations de chiffrement. Bien que CryptoStream dérive de Stream, il ne fait pas partie de l'espace de noms System.IO mais de l'espace de noms System.Security.Cryptography.

La classe MemoryStream est un flux non mis en mémoire tampon dont les données encapsulées sont directement accessibles en mémoire. Ce flux n'a pas de magasin de stockage et peut servir de mémoire tampon temporaire.

La classe NetworkStream représente une classe Stream sur une connexion réseau. Bien que NetworkStream dérive de Stream, il ne fait pas partie de l'espace de noms System.IO mais de l'espace de noms System.Net.Sockets.

E/S et sécurité

Lors de l'utilisation des classes de l'espace de noms System.IO, il est nécessaire que les spécifications de sécurité du système d'exploitation, comme les listes de contrôle d'accès (ACL), soient appliquées pour que l'accès soit possible. Ces spécifications s'ajoutent aux spécifications FileIOPermission existantes.

RemarqueRemarque

Les listes de contrôle d'accès peuvent être gérées par programme.Pour plus d'informations, consultez Comment : ajouter ou supprimer des entrées dans la liste de contrôle d'accès et Vue d'ensemble de la technologie ACL.

Remarque AttentionAttention

La stratégie de sécurité par défaut d'Internet et d'un intranet n'autorise pas l'accès aux fichiers.En conséquence, n'utilisez pas les classes d'E/S de stockage non isolé régulières si vous écrivez du code qui doit être téléchargé sur Internet.Utilisez à la place le Stockage isolé.

Remarque AttentionAttention

Lors de l'ouverture d'un fichier ou d'un flux de réseau, la vérification de la sécurité n'a lieu que lorsque le flux est construit.En conséquence, soyez vigilants lorsque vous transmettez ces flux à un domaine d'application ou un code d'un niveau de confiance moindre.

Voir aussi

Tâches

Comment : créer une liste des répertoires

Comment : lire et écrire dans un fichier de données créé récemment

Comment : ouvrir un fichier journal et y ajouter des éléments

Comment : lire du texte dans un fichier

Comment : écrire du texte dans un fichier

Comment : lire les caractères d'une chaîne

Comment : écrire des caractères dans une chaîne

Concepts

Tâches d'E/S courantes