Fichier et flux de données E/SFile and Stream I/O

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.File and stream I/O (input/output) refers to the transfer of data either to or from a storage medium. Dans le .NET Framework, 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.In the .NET Framework, the System.IO namespaces contain types that enable reading and writing, both synchronously and asynchronously, on data streams and files. 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.These namespaces also contain types that perform compression and decompression on files, and types that enable communication through pipes and serial ports.

Un fichier est une collection ordonnée et nommée d'octets ayant un stockage persistant.A file is an ordered and named collection of bytes that has persistent storage. 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.When you work with files, you work with directory paths, disk storage, and file and directory names. 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).In contrast, a stream is a sequence of bytes that you can use to read from and write to a backing store, which can be one of several storage mediums (for example, disks or memory). 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.Just as there are several backing stores other than disks, there are several kinds of streams other than file streams, such as network, memory, and pipe streams.

Fichiers et répertoiresFiles and directories

Utilisez les types de l'espace de noms System.IO pour interagir avec les fichiers et les répertoires.You can use the types in the System.IO namespace to interact with files and directories. 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.For example, you can get and set properties for files and directories, and retrieve collections of files and directories based on search criteria.

Pour les conventions de nommage 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 le .NET Framework 4.6.2 et ultérieur, consultez Formats de chemin de fichier sur les systèmes Windows.For path naming conventions and the ways to express a file path for Windows systems, including with the DOS device syntax supported in .NET Core 1.1 and later and the .NET Framework 4.6.2 and later, see File path formats on Windows systems.

Voici quelques classes de fichiers et de répertoires couramment utilisées :Here are some commonly used file and directory classes:

  • 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.File - provides static methods for creating, copying, deleting, moving, and opening files, and helps create a FileStream object.

  • 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.FileInfo - provides instance methods for creating, copying, deleting, moving, and opening files, and helps create a FileStream object.

  • 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.Directory - provides static methods for creating, moving, and enumerating through directories and subdirectories.

  • 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.DirectoryInfo - provides instance methods for creating, moving, and enumerating through directories and subdirectories.

  • Path fournit des méthodes et des propriétés pour le traitement des chaînes de répertoire entre plateformes.Path - provides methods and properties for processing directory strings in a cross-platform manner.

Vous devez toujours fournir une gestion des exceptions robuste lors de l’appel des méthodes de système de fichiers.You should always provide robust exception handling when calling filesystem methods. Pour plus d’informations, consultez Gestion des erreurs E/S.For more information, see Handling I/O errors.

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.In addition to using these classes, Visual Basic users can use the methods and properties provided by the Microsoft.VisualBasic.FileIO.FileSystem class for file I/O.

Voir Guide pratique pour copier des répertoires, Guide pratique pour créer un listing de répertoires et Guide pratique pour énumérer des répertoires et des fichiers.See How to: Copy Directories, How to: Create a Directory Listing, and How to: Enumerate Directories and Files.

FluxStreams

La classe abstraite de base Stream prend en charge la lecture et l'écriture d'octets.The abstract base class Stream supports reading and writing bytes. Toutes les classes qui représentent des flux héritent de la classe Stream.All classes that represent streams inherit from the Stream class. 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.The Stream class and its derived classes provide a common view of data sources and repositories, and isolate the programmer from the specific details of the operating system and underlying devices.

Les flux impliquent trois opérations fondamentales :Streams involve three fundamental operations:

  • Lecture : transfert de données d'un flux vers une structure de données tel qu'un tableau d'octets.Reading - transferring data from a stream into a data structure, such as an array of bytes.

  • Écriture : transfert de données d'une source de données dans un flux.Writing - transferring data to a stream from a data source.

  • Recherche : envoi d'une requête concernant la position actuelle dans un flux et modification de cette dernière.Seeking - querying and modifying the current position within a stream.

Selon la source de données sous-jacente ou le référentiel, un flux peut prendre en charge certaines de ces capacités.Depending on the underlying data source or repository, a stream might support only some of these capabilities. Par exemple, la classe PipeStream ne prend pas en charge la recherche.For example, the PipeStream class does not support seeking. Les propriétés CanRead, CanWrite et CanSeek d'un flux spécifient les opérations que le flux prend en charge.The CanRead, CanWrite, and CanSeek properties of a stream specify the operations that the stream supports.

Voici quelques classes de flux couramment utilisées :Here are some commonly used stream classes:

  • FileStream pour la lecture et l'écriture dans un fichier.FileStream – for reading and writing to a file.

  • IsolatedStorageFileStream pour la lecture et l'écriture dans un fichier d'un stockage isolé.IsolatedStorageFileStream – for reading and writing to a file in isolated storage.

  • MemoryStream pour la lecture et l'écriture dans la mémoire en tant que magasin de stockage.MemoryStream – for reading and writing to memory as the backing store.

  • BufferedStream pour l'amélioration des performances de vos opérations de lecture et d'écriture.BufferedStream – for improving performance of read and write operations.

  • NetworkStream pour la lecture et l'écriture sur vos sockets réseau.NetworkStream – for reading and writing over network sockets.

  • PipeStream pour la lecture et l'écriture sur des canaux nommés ou anonymes.PipeStream – for reading and writing over anonymous and named pipes.

  • CryptoStream pour la liaison des flux de données aux transformations de chiffrement.CryptoStream – for linking data streams to cryptographic transformations.

Pour obtenir un exemple d'utilisation de flux de façon asynchrone, consultez E/S sur fichier asynchrones.For an example of working with streams asynchronously, see Asynchronous File I/O.

Lecteurs et writersReaders and writers

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.The System.IO namespace also provides types for reading encoded characters from streams and writing them to streams. En général, les flux sont conçus pour l'entrée et la sortie d'octets.Typically, streams are designed for byte input and output. 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.The reader and writer types handle the conversion of the encoded characters to and from bytes so the stream can complete the operation. 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.Each reader and writer class is associated with a stream, which can be retrieved through the class's BaseStream property.

Voici quelques classes de lecteur et writer couramment utilisées :Here are some commonly used reader and writer classes:

  • BinaryReader et BinaryWriter pour la lecture et l'écriture des types de données primitifs comme valeurs binaires.BinaryReader and BinaryWriter – for reading and writing primitive data types as binary values.

  • 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.StreamReader and StreamWriter – for reading and writing characters by using an encoding value to convert the characters to and from bytes.

  • StringReader et StringWriter pour la lecture et l'écriture des caractères à partir de chaînes et inversement.StringReader and StringWriter – for reading and writing characters to and from strings.

  • 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.TextReader and TextWriter – serve as the abstract base classes for other readers and writers that read and write characters and strings, but not binary data.

Voir Guide pratique pour lire du texte dans un fichier, Guide pratique pour écrire du texte dans un fichier, Guide pratique pour lire les caractères d’une chaîne et Guide pratique pour écrire des caractères dans une chaîne.See How to: Read Text from a File, How to: Write Text to a File, How to: Read Characters from a String, and How to: Write Characters to a String.

Opérations d’E/S asynchronesAsynchronous I/O operations

La lecture ou l'écriture de grandes quantités de données peut consommer beaucoup de ressources.Reading or writing a large amount of data can be resource-intensive. Vous devez effectuer ces tâches de façon asynchrone si votre application doit rester réactive aux actions de l'utilisateur.You should perform these tasks asynchronously if your application needs to remain responsive to the user. 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.With synchronous I/O operations, the UI thread is blocked until the resource-intensive operation has completed. Utilisez des opérations d'E/S asynchrones lors du développement d'applications Windows 8.x StoreWindows 8.x Store pour empêcher de donner l'impression que votre application a cessé de fonctionner.Use asynchronous I/O operations when developing Windows 8.x StoreWindows 8.x Store apps to prevent creating the impression that your app has stopped working.

Les membres asynchrones contiennent Async dans leurs noms, comme les méthodes CopyToAsync, FlushAsync, ReadAsync et WriteAsync.The asynchronous members contain Async in their names, such as the CopyToAsync, FlushAsync, ReadAsync, and WriteAsync methods. Utilisez ces méthodes avec async et les mots clés await.You use these methods with the async and await keywords.

Pour plus d'informations, consultez E/S de fichier asynchrone.For more information, see Asynchronous File I/O.

CompressionCompression

La compression désigne le processus de réduction de la taille d'un fichier pour le stockage.Compression refers to the process of reducing the size of a file for storage. La décompression consiste à extraire le contenu d'un fichier compressé afin qu'il soit dans un format utilisable.Decompression is the process of extracting the contents of a compressed file so they are in a usable format. L'espace de noms System.IO.Compression contient des types pour la compression et la décompression de fichiers et de flux.The System.IO.Compression namespace contains types for compressing and decompressing files and streams.

Les classes suivantes sont fréquemment utilisées lors de la compression et de la décompression de fichiers et de flux :The following classes are frequently used when compressing and decompressing files and streams:

  • ZipArchive pour la création et l'extraction des entrées de l'archive zip.ZipArchive – for creating and retrieving entries in the zip archive.

  • ZipArchiveEntry pour la représentation d'un fichier compressé.ZipArchiveEntry – for representing a compressed file.

  • ZipFile pour la création, l'extraction et l'ouverture d'un package compressé.ZipFile – for creating, extracting, and opening a compressed package.

  • ZipFileExtensions pour la création et l'extraction des entrées dans un package compressé.ZipFileExtensions – for creating and extracting entries in a compressed package.

  • DeflateStream pour la compression et la décompression des flux en utilisant l'algorithme Deflate.DeflateStream – for compressing and decompressing streams using the Deflate algorithm.

  • GZipStream pour la compression et la décompression des flux au format de données gzip.GZipStream – for compressing and decompressing streams in gzip data format.

Voir Guide pratique pour compresser et extraire des fichiers.See How to: Compress and Extract Files.

Stockage isoléIsolated storage

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.Isolated storage is a data storage mechanism that provides isolation and safety by defining standardized ways of associating code with saved data. Le stockage fournit un système de fichiers virtuel qui est isolé par utilisateur, assembly et (éventuellement) domaine.The storage provides a virtual file system that is isolated by user, assembly, and (optionally) domain. Le stockage isolé est particulièrement utile lorsque votre application n'a pas l'autorisation d'accès aux fichiers utilisateur.Isolated storage is particularly useful when your application does not have permission to access user files. 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.You can save settings or files for your application in a manner that is controlled by the computer's security policy.

Le stockage isolé n'est pas disponible pour les applications Windows 8.x StoreWindows 8.x Store. Utilisez à la place les classes de données d'application de l'espace de noms Windows.Storage.Isolated storage is not available for Windows 8.x StoreWindows 8.x Store apps; instead, use application data classes in the Windows.Storage namespace. Pour plus d’informations, consultez Données de l’application.For more information, see Application data.

Les classes suivantes sont fréquemment utilisées lors d'une implémentation de stockage isolé :The following classes are frequently used when implementing isolated storage:

Voir Stockage isolé.See Isolated Storage.

Opérations d’E/S dans les applications Windows StoreI/O operations in Windows Store apps

.NET pour les applications Windows 8.x Store.NET for Windows 8.x Store apps 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 Framework.The .NET pour les applications Windows 8.x Store.NET for Windows 8.x Store apps contains many of the types for reading from and writing to streams; however, this set does not include all the .NET Framework I/O types.

Quelques différences importantes sont notables pour les opérations d'E/S dans les applications Windows 8.x StoreWindows 8.x Store :Some important differences to note when using I/O operations in Windows 8.x StoreWindows 8.x Store apps:

Vous pouvez convertir entre les flux .NET Framework et les flux Windows Runtime, si nécessaire.You can convert between .NET Framework streams and Windows Runtime streams, if necessary. Pour plus d'informations, voir Procédure : effectuer une conversion entre les flux .NET Framework et les flux Windows Runtime ou WindowsRuntimeStreamExtensions.For more information, see How to: Convert Between .NET Framework Streams and Windows Runtime Streams or WindowsRuntimeStreamExtensions.

Pour plus d’informations sur les opérations d’E/S dans une application Windows 8.x StoreWindows 8.x Store, consultez Démarrage rapide : lecture et écriture de fichiers.For more information about I/O operations in a Windows 8.x StoreWindows 8.x Store app, see Quickstart: Reading and writing files.

E/S et sécuritéI/O and security

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.When you use the classes in the System.IO namespace, you must follow operating system security requirements such as access control lists (ACLs) to control access to files and directories. Ces spécifications s'ajoutent aux spécifications FileIOPermission existantes.This requirement is in addition to any FileIOPermission requirements. Les listes de contrôle d'accès peuvent être gérées par programmation.You can manage ACLs programmatically. Pour plus d'informations, voir Procédure : ajouter ou supprimer des entrées dans la liste de contrôle d’accès.For more information, see How to: Add or Remove Access Control List Entries.

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.Default security policies prevent Internet or intranet applications from accessing files on the user’s computer. 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.Therefore, do not use the I/O classes that require a path to a physical file when writing code that will be downloaded over the Internet or intranet. À la place, utilisez le stockage isolé pour les applications .NET Framework traditionnelles ou les données d'application pour les applications Windows 8.x StoreWindows 8.x Store.Instead, use isolated storage for traditional .NET Framework applications, or use application data for Windows 8.x StoreWindows 8.x Store apps.

La vérification de sécurité n'est exécutée qu'à la création du flux.A security check is performed only when the stream is constructed. 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.Therefore, do not open a stream and then pass it to less-trusted code or application domains.

  • Tâches d’E/S courantesCommon I/O Tasks
    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.Provides a list of I/O tasks associated with files, directories, and streams, and links to relevant content and examples for each task.

  • E/S sur fichier asynchronesAsynchronous File I/O
    Décrit les opérations élémentaires des E/S asynchrones et leurs avantages en termes de performances.Describes the performance advantages and basic operation of asynchronous I/O.

  • Stockage isoléIsolated Storage
    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.Describes a data storage mechanism that provides isolation and safety by defining standardized ways of associating code with saved data.

  • CanauxPipes
    Décrit des opérations de canal nommé et anonyme dans le .NET Framework.Describes anonymous and named pipe operations in the .NET Framework.

  • Fichiers mappés en mémoireMemory-Mapped Files
    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.Describes memory-mapped files, which contain the contents of files on disk in virtual memory. 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.You can use memory-mapped files to edit very large files and to create shared memory for interprocess communication.