Entrainement
Module
Utiliser des fichiers et des répertoires dans une application .NET - Training
Découvrez comment utiliser .NET, C# et System.IO pour travailler avec des répertoires, des chemins d’accès, des fichiers et le système de fichiers.
Ce navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
E/S de fichier et de flux (entrées/sorties) fait référence au transfert de données vers ou depuis un support de stockage. Dans .NET, les espaces de noms System.IO
contiennent des types qui permettent la lecture et l'écriture, de façon synchrone ou asynchrone, sur les flux de données et les fichiers. Ces espaces de noms contiennent également les types qui exécutent la compression et la décompression sur les fichiers, et ceux qui permettent la communication via des canaux et des ports série.
Un fichier est une collection ordonnée et nommée d'octets ayant un stockage persistant. Lorsque vous travaillez sur des fichiers, vous manipulez des chemins d'accès aux répertoires, du stockage disque et des noms de fichiers et de répertoires. En revanche, un flux est une séquence d'octets que vous pouvez lire et écrire dans un magasin de stockage, qui peut être l'un des nombreux supports de stockage (par exemple, des disques ou de la mémoire). De même qu'il existe d'autres magasins de stockage que les disques, il existe d'autres flux que les flux de fichiers, tels que les flux de réseau, de mémoire et de canaux.
Utilisez les types de l'espace de noms System.IO pour interagir avec les fichiers et les répertoires. Par exemple, obtenez et définissez les propriétés des fichiers et des répertoires, et extrayez les collections de fichiers et de répertoires en fonction de critères de recherche.
Pour les conventions d’affectation de noms des chemins et les nouvelles méthodes pour exprimer un chemin de fichier pour les systèmes Windows, notamment avec la syntaxe des appareils DOS prise en charge dans .NET Core 1.1 et ultérieur et .NET Framework 4.6.2 et ultérieur, consultez Formats de chemin de fichier 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 objet FileStream.
FileInfo fournit des méthodes d'instance pour la création, la copie, la suppression, le déplacement et l'ouverture de fichiers et permet de créer un objet FileStream.
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.
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.
Path fournit des méthodes et des propriétés pour le traitement des chaînes de répertoire entre plateformes.
Vous devez toujours fournir une gestion des exceptions robuste lors de l’appel des méthodes de système de fichiers. Pour plus d’informations, consultez Gestion des erreurs E/S.
En plus d'utiliser ces classes, les utilisateurs de Visual Basic peuvent utiliser les méthodes et les propriétés fournies par la classe Microsoft.VisualBasic.FileIO.FileSystem pour l'E/S de fichier.
Voir Comment : copier des répertoires, Comment : créer une liste de répertoires et Comment : énumérer des répertoires et des fichiers.
La classe abstraite de base Stream prend en charge la lecture et l'écriture d'octets. 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 globale 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 :
Lecture : transfert de données d'un flux vers une structure de données tel qu'un tableau d'octets.
Écriture : transfert de données d'une source de données dans un flux.
Recherche : envoi d'une requête concernant la position actuelle dans un flux et modification de cette dernière.
Selon la source de données sous-jacente ou le référentiel, un flux peut prendre en charge certaines de ces capacité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 que le flux prend en charge.
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 d'un stockage isolé.
MemoryStream pour la lecture et l'écriture dans la mémoire en tant que magasin de stockage.
BufferedStream pour l'amélioration des performances de vos opérations de lecture et d'écriture.
NetworkStream pour la lecture et l'écriture sur vos sockets réseau.
PipeStream pour la lecture et l'écriture sur des canaux nommés ou anonymes.
CryptoStream pour la liaison des flux de données aux transformations de chiffrement.
Pour obtenir un exemple d'utilisation de flux de façon asynchrone, consultez E/S sur fichier asynchrones.
L'espace de noms System.IO fournit également des types pour la lecture des caractères encodés à partir des flux et l'écriture des caractères encodés dans les flux. En général, les flux sont conçus pour l'entrée et la sortie d'octets. Les types lecteur et writer gèrent la conversion des caractères encodés en octets et inversement pour permettre au flux de terminer l'opération. Chaque classe de lecteur et writer est associée à un flux, qui peut être récupéré via la propriété BaseStream
de la classe.
Voici quelques classes de lecteur et writer couramment utilisées :
BinaryReader et BinaryWriter pour la lecture et l'écriture des types de données primitifs comme valeurs binaires.
StreamReader et StreamWriter pour la lecture et l'écriture à l'aide d'une valeur d'encodage pour convertir des caractères en octets et inversement.
StringReader et StringWriter pour la lecture et l'écriture des caractères à partir de chaînes et inversement.
TextReader et TextWriter servent de classes de base abstraites à d'autres lecteurs et writers qui lisent et écrivent des caractères et des chaînes, mais pas des données binaires.
Voir Comment : lire du texte dans un fichier, Comment : écrire du texte dans un fichier, Comment : lire les caractères d'une chaîne et Comment : écrire des caractères dans une chaîne.
La lecture ou l'écriture de grandes quantités de données peut consommer beaucoup de ressources. Vous devez effectuer ces tâches de façon asynchrone si votre application doit rester réactive aux actions de l'utilisateur. Avec les opérations d'E/S synchrones, le thread d'interface utilisateur est bloqué jusqu'à ce que l'opération consommatrice de ressources soit terminée. Utilisez des opérations d'E/S asynchrones lors du développement d'applications Windows 8.x Store pour empêcher de donner l'impression que votre application a cessé de fonctionner.
Les membres asynchrones contiennent Async
dans leurs noms, comme les méthodes CopyToAsync, FlushAsync, ReadAsync et WriteAsync. Utilisez ces méthodes avec async
et les mots clés await
.
Pour plus d'informations, consultez E/S de fichier asynchrone.
La compression désigne le processus de réduction de la taille d'un fichier pour le stockage. La décompression consiste à extraire le contenu d'un fichier compressé afin qu'il soit dans un format utilisable. L'espace de noms System.IO.Compression contient des types pour la compression et la décompression de fichiers et de flux.
Les classes suivantes sont fréquemment utilisées lors de la compression et de la décompression de fichiers et de flux :
ZipArchive pour la création et l'extraction des entrées de l'archive zip.
ZipArchiveEntry pour la représentation d'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 des entrées dans un package compressé.
DeflateStream pour la compression et la décompression des flux en utilisant l'algorithme Deflate.
GZipStream pour la compression et la décompression des flux au format de données gzip.
Voir Comment : compresser et extraire des fichiers.
Le stockage isolé est un mécanisme de stockage de données qui offre une isolation et une sécurité en définissant des méthodes standardisées pour associer du code à des données enregistrées. Le stockage fournit un système de fichiers virtuel qui est isolé par utilisateur, assembly et (éventuellement) domaine. Le stockage isolé est particulièrement utile lorsque votre application n'a pas l'autorisation d'accès aux fichiers utilisateur. Enregistrez les paramètres ou les fichiers de votre application d'une façon contrôlée par la stratégie de sécurité de l'ordinateur.
Le stockage isolé n'est pas disponible pour les applications Windows 8.x Store. Utilisez à la place les classes de données d'application de l'espace de noms Windows.Storage. Pour plus d’informations, consultez Données de l’application.
Les classes suivantes sont fréquemment utilisées lors d'une implémentation de stockage isolé :
IsolatedStorage fournit la classe de base pour les implémentations de stockage isolé.
IsolatedStorageFile fournit une zone de stockage isolé qui contient les fichiers et les répertoires.
IsolatedStorageFileStream expose un fichier au sein d'un stockage isolé.
Voir Stockage isolé.
Les applications .NET pour Windows 8.x Store contiennent plusieurs types pour la lecture et l'écriture dans les flux. Toutefois, cet ensemble n'inclut pas tous les types d'E/S .NET.
Quelques différences importantes sont notables pour les opérations d'E/S dans les applications Windows 8.x Store :
Les types spécifiquement liés aux opérations sur les fichiers, tels que File, FileInfo, Directory et DirectoryInfo ne sont pas inclus dans les applications .NET pour Windows 8.x Store. À la place, utilisez les types dans l’espace de noms Windows.Storage de Windows Runtime, par exemple StorageFile et StorageFolder.
Le stockage isolé n'est pas disponible ; à la place, utilisez les données d'application.
Utilisez les 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 convertir entre les flux .NET Framework et les flux Windows Runtime, si nécessaire. Pour plus d'informations, consultez la section Comment : effectuer une conversion entre les flux .NET Framework et les flux Windows Runtime ou WindowsRuntimeStreamExtensions.
Pour plus d’informations sur les opérations d’E/S dans une application Windows 8.x Store, consultez la section Démarrage rapide : lecture et écriture de fichiers.
Lorsque vous utilisez les classes de l’espace de noms System.IO, 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 aux répertoires. Ces spécifications s'ajoutent aux spécifications FileIOPermission existantes. Les listes de contrôle d'accès peuvent être gérées par programmation. Pour plus d'informations, consultez Comment : ajouter ou supprimer des entrées dans la liste de contrôle d'accès.
Les stratégies de sécurité par défaut empêchent les applications provenant d'Internet ou de l'intranet d'accéder aux fichiers sur l'ordinateur de l'utilisateur. Par conséquent, n’utilisez pas les classes d’E/S qui requièrent un chemin d’accès à un fichier physique lors de l’écriture du code qui sera téléchargé sur Internet ou sur l’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.
Tâches d’E/S courantes
Présente les tâches d’E/S associées aux fichiers, aux répertoires et aux flux, et des liens vers du contenu et des exemples appropriés pour chaque tâche.
E/S sur fichier asynchrones
Décrit les opérations élémentaires des E/S asynchrones et leurs avantages en termes de performances.
Stockage isolé
Décrit un dispositif de stockage des données qui assure l'isolation et la sécurité en définissant des solutions standardisées visant à associer le code aux données enregistrées.
Canaux
Décrit des opérations anonymes et de canal nommé dans .NET.
Fichiers mappés en mémoire
Décrit les fichiers mappés en mémoire, qui contiennent le contenu de fichiers stockés sur le disque dans la mémoire virtuelle. Vous pouvez utiliser des fichiers mappés en mémoire afin de modifier des fichiers très volumineux et de créer la mémoire partagée pour la communication entre processus.
Entrainement
Module
Utiliser des fichiers et des répertoires dans une application .NET - Training
Découvrez comment utiliser .NET, C# et System.IO pour travailler avec des répertoires, des chemins d’accès, des fichiers et le système de fichiers.
Documentation
Découvrez comment effectuer des tâches de fichier et de répertoire courantes à l’aide de classes et méthodes dans l’espace de noms System.IO dans .NET.
Guide pratique pour lire et écrire dans un fichier de données nouvellement créé - .NET
Découvrez comment lire et écrire dans un fichier de données nouvellement créé dans .NET à l’aide des classes System.IO.BinaryReader et System.IO.BinaryWriter.
Classe System.IO.FileStream - .NET
Découvrez la classe System.IO.FileStream.