Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les E/S de fichier et de flux (entrée/sortie) font référence au transfert de données vers ou à partir d’un support de stockage. Dans .NET, les System.IO espaces de noms contiennent des types qui permettent la lecture et l’écriture, de manière synchrone et asynchrone, sur les flux de données et les fichiers. Ces espaces de noms contiennent également des types qui effectuent la compression et la décompression sur les fichiers et les types qui permettent la communication via des canaux et des ports série.
Un fichier est une collection ordonnée et nommée d’octets qui a un stockage persistant. Lorsque vous travaillez avec des fichiers, vous utilisez des chemins d’accès de répertoire, un stockage sur disque et des noms de fichiers et de répertoires. En revanche, un flux est une séquence d’octets que vous pouvez utiliser pour effectuer des opérations de lecture et d'écriture sur un support de stockage, qui peut être l’un des différents médiums de stockage (par exemple, disques ou mémoire). Tout comme il existe plusieurs supports de stockage autres que les disques, il existe plusieurs types de streams autres que les streams de fichiers, tels que le réseau, la mémoire et les canaux.
Fichiers et répertoires
Utilisez les types de l'espace de noms System.IO pour interagir avec les fichiers et les répertoires. Par exemple, vous pouvez obtenir et définir des propriétés pour les fichiers et les répertoires, et récupérer des collections de fichiers et de répertoires en fonction des critères de recherche.
Pour connaître les conventions de nommage des chemins d’accès et les méthodes permettant d’exprimer un chemin d’accès de fichier pour les systèmes Windows, notamment avec la syntaxe d’appareil DOS prise en charge dans .NET Core 1.1 et versions ultérieures et .NET Framework 4.6.2 et versions ultérieures, consultez les formats de chemin d’accès aux fichiers sur les systèmes Windows.
Voici quelques classes de fichiers et de répertoires couramment utilisées :
File - fournit des méthodes statiques pour la création, la copie, la suppression, le déplacement et l’ouverture de fichiers, et permet de créer un FileStream objet.
FileInfo - fournit des méthodes d’instance pour créer, copier, supprimer, déplacer et ouvrir des fichiers, et permet de créer un FileStream objet.
Directory - fournit des méthodes statiques pour la création, le déplacement et l’énumération via des répertoires et des sous-répertoires.
DirectoryInfo - fournit des méthodes d’instance pour la création, le déplacement et l’énumération via des répertoires et des sous-répertoires.
Path - fournit des méthodes et des propriétés pour le traitement des chaînes d’annuaire de manière multiplateforme.
Vous devez toujours fournir une gestion robuste des exceptions lors de l’appel de méthodes de système de fichiers. Pour plus d’informations, consultez Gestion des erreurs d’E/S.
Outre l’utilisation de ces classes, les utilisateurs visual Basic peuvent utiliser les méthodes et les propriétés fournies par la classe pour les Microsoft.VisualBasic.FileIO.FileSystem E/S de fichier.
Découvrez comment : copier des répertoires, comment : créer une liste de répertoires et comment : énumérer des répertoires et des fichiers.
Flux
La classe Stream de base abstraite prend en charge la lecture et l’écriture d’octets. Toutes les classes qui représentent des flux héritent de la Stream classe. La Stream classe et ses classes dérivées fournissent une vue commune des sources de données et des référentiels, et isolent le programmeur des détails spécifiques du système d’exploitation et des appareils sous-jacents.
Les flux impliquent trois opérations fondamentales :
Lecture : transfert de données à partir d’un flux dans une structure de données, telle qu’un tableau d’octets.
Écriture : transfert de données vers un flux à partir d’une source de données.
Recherche : interrogation et modification de la position actuelle dans un flux.
Selon la source de données ou le référentiel sous-jacent, un flux peut prendre en charge uniquement certaines de ces fonctionnalités. Par exemple, la classe PipeStream ne prend pas en charge la recherche. Les propriétés CanRead, CanWrite, et CanSeek d’un flux spécifient les opérations prises en charge par le flux.
Voici quelques classes de flux couramment utilisées :
FileStream : pour la lecture et l’écriture dans un fichier.
IsolatedStorageFileStream : pour la lecture et l’écriture dans un fichier dans un stockage isolé.
MemoryStream pour la lecture et l'écriture dans la mémoire en tant que magasin de stockage.
BufferedStream – pour améliorer les performances des opérations de lecture et d’écriture.
NetworkStream : pour la lecture et l’écriture sur des sockets réseau.
PipeStream pour la lecture et l'écriture sur des canaux nommés ou anonymes.
CryptoStream : pour lier des flux de données à des transformations de chiffrement.
Pour obtenir un exemple d’utilisation asynchrone de flux, consultez les E/S de fichier asynchrones.
Lecteurs et écrivains
L’espace System.IO de noms fournit également des types pour lire des caractères encodés à partir de flux et les écrire dans des flux. En règle générale, les flux sont conçus pour l’entrée et la sortie d’octets. Les types de lecteur et d’enregistreur gèrent la conversion des caractères encodés en octets afin que le flux puisse terminer l’opération. Chaque classe de lecteur et d'écrivain est associée à un flux, qui peut être récupéré via la propriété BaseStream de la classe.
Voici quelques classes de lecture et d'écriture couramment utilisées :
BinaryReader et BinaryWriter : pour lire et écrire des types de données primitifs en tant que valeurs binaires.
StreamReader et StreamWriter – pour lire et écrire des caractères en utilisant une valeur d'encodage pour convertir les caractères vers et depuis des octets.
StringReader et StringWriter : pour lire et écrire des caractères dans et depuis des chaînes.
TextReader et TextWriter - servir de classes de base abstraites pour d’autres lecteurs et enregistreurs qui lisent et écrivent des caractères et des chaînes, mais pas des données binaires.
Découvrez comment : lire du texte à partir d’un fichier, comment : écrire du texte dans un fichier, comment : lire des caractères à partir d’une chaîne et comment : écrire des caractères dans une chaîne.
Opérations d’E/S asynchrones
La lecture ou l’écriture d’une grande quantité de données peut être gourmande en ressources. Vous devez effectuer ces tâches de manière asynchrone si votre application doit rester réactive à l’utilisateur. Avec les opérations d’E/S synchrones, le thread d’interface utilisateur est bloqué jusqu’à ce que l’opération gourmande en ressources soit terminée. Utilisez des opérations d’E/S asynchrones lors du développement d’applications du Windows 8.x Store pour empêcher la création de l’impression que votre application a cessé de fonctionner.
Les membres asynchrones contiennent Async dans leurs noms, tels que les méthodes CopyToAsync, FlushAsync, ReadAsync, et WriteAsync. Vous utilisez ces méthodes avec les mots clés async et await.
Pour plus d'informations, consultez entrées/sorties de fichiers asynchrones.
Compression
La compression fait référence au processus de réduction de la taille d’un fichier pour le stockage. La décompression est le processus d’extraction du contenu d’un fichier compressé afin qu’ils soient dans un format utilisable. L’espace System.IO.Compression de noms contient des types pour compresser et décompresser des fichiers et des flux.
Les classes suivantes sont fréquemment utilisées lors de la compression et de la décompression des fichiers et des flux :
ZipArchive : pour la création et la récupération d’entrées dans l’archive zip.
ZipArchiveEntry : pour représenter un fichier compressé.
ZipFile : pour la création, l’extraction et l’ouverture d’un package compressé.
ZipFileExtensions : pour la création et l’extraction d’entrées dans un package compressé.
DeflateStream : pour compresser et décompresser des flux à l’aide de l’algorithme Deflate.
GZipStream : pour compresser et décompresser les flux au format de données gzip.
Découvrez comment : compresser et extraire des fichiers.
Stockage isolé
Le stockage isolé est un mécanisme de stockage de données qui assure l’isolation et la sécurité en définissant des méthodes standardisées d’association de code avec des données enregistrées. Le stockage fournit un système de fichiers virtuel isolé par l’utilisateur, l’assembly et (éventuellement) le domaine. Le stockage isolé est particulièrement utile lorsque votre application n’a pas l’autorisation d’accéder aux fichiers utilisateur. Vous pouvez enregistrer des paramètres ou des fichiers pour votre application de manière contrôlée par la stratégie de sécurité de l’ordinateur.
Le stockage isolé n’est pas disponible pour les applications du Windows 8.x Store ; Utilisez plutôt des classes de données d’application dans l’espace Windows.Storage de noms. Pour plus d’informations, consultez Données d’application.
Les classes suivantes sont fréquemment utilisées lors de l’implémentation d’un stockage isolé :
IsolatedStorage : fournit la classe de base pour les implémentations de stockage isolées.
IsolatedStorageFile : fournit une zone de stockage isolée qui contient des fichiers et des répertoires.
IsolatedStorageFileStream - expose un fichier dans un stockage isolé.
Voir Stockage isolé.
Opérations d’E/S dans les applications du Windows Store
.NET pour les applications du Windows Store sur Windows 8.x contient plusieurs types pour la lecture et l'écriture dans les flux. Toutefois, cet ensemble n'inclut pas tous les types d'E/S du .NET.
Voici quelques différences importantes à noter lors de l’utilisation d’opérations d’E/S dans les applications du Windows 8.x Store :
Les types spécifiquement liés aux opérations de fichier, telles que File, FileInfoDirectory et DirectoryInfo, ne sont pas inclus dans le .NET pour les applications du Windows 8.x Store. Utilisez plutôt les types de l'environnement d'exécution Windows dans l'espace de noms Windows.Storage, tels que StorageFile et StorageFolder.
Le stockage isolé n’est pas disponible ; Utilisez plutôt des données d’application.
Utilisez des méthodes asynchrones, telles que ReadAsync et WriteAsync, pour empêcher le blocage du thread d’interface utilisateur.
Les types de compression ZipFile et ZipFileExtensions basés sur le chemin d’accès ne sont pas disponibles. À la place, utilisez les types dans l’espace de noms Windows.Storage.Compression.
Vous pouvez effectuer une conversion entre les flux .NET Framework et les flux Windows Runtime, si nécessaire. Pour plus d’informations, consultez Comment : convertir entre des flux .NET Framework et des flux Windows Runtime ou WindowsRuntimeStreamExtensions.
Pour plus d’informations sur les opérations d’E/S dans une application Windows 8.x Store, consultez Démarrage rapide : Lecture et écriture de fichiers.
E/S et sécurité
Lorsque vous utilisez les classes dans l’espace System.IO de noms, vous devez suivre les exigences de sécurité du système d’exploitation, telles que les listes de contrôle d’accès (ACL) pour contrôler l’accès aux fichiers et répertoires. Ces spécifications s'ajoutent aux spécifications FileIOPermission existantes. Vous pouvez gérer les listes de contrôle d’accès par programmation. Pour plus d’informations, consultez Comment : ajouter ou supprimer des entrées de liste de contrôle d’accès.
Les stratégies de sécurité par défaut empêchent les applications Internet ou intranet d’accéder aux fichiers sur l’ordinateur de l’utilisateur. Par conséquent, n’utilisez pas les classes d’E/S qui nécessitent un chemin d’accès à un fichier physique lors de l’écriture de code qui sera téléchargé sur Internet ou intranet. Utilisez plutôt un stockage isolé pour les applications .NET.
La vérification de sécurité n'est exécutée qu'à la création du flux. Par conséquent, n'ouvrez pas de flux pour le passer ensuite à du code ou à des domaines d'application d'un niveau de sécurité inférieur.
Rubriques connexes
Tâches d’E/S courantes
Fournit la liste des tâches d’E/S associées aux fichiers, répertoires et flux, ainsi que des liens vers du contenu et des exemples pertinents pour chaque tâche.E/S de fichier asynchrone
Décrit les avantages des performances et le fonctionnement de base des E/S asynchrones.Stockage isolé
Décrit un mécanisme de stockage de données qui assure l’isolation et la sécurité en définissant des méthodes standardisées d’association de code avec des données enregistrées.Tuyaux
Décrit les opérations de canal anonyme et nommé dans .NET.Fichiers mappés en mémoire
Décrit les fichiers mappés en mémoire, qui contiennent le contenu des fichiers sur le disque dans la mémoire virtuelle. Vous pouvez utiliser des fichiers mappés en mémoire pour modifier des fichiers très volumineux et créer une mémoire partagée pour la communication interprocesseur.