# Programmation C sharp/Les fichiers

Cette page est considérée comme une ébauche à compléter . Si vous possédez quelques connaissances sur le sujet, vous pouvez les partager en éditant dès à présent cette page (en cliquant sur le lien « »).
Ressources suggérées : Programmation C sharp/Bibliographie et liens
Un fichier permet de stocker des données sur un support physique de stockage (disque dur, disquette, clé USB, ...). Les fichiers sont regroupés dans des répertoires.
L'espace de nom System.IO contient les classes permettant de gérer les fichiers et les répertoires.

## Les classes File et Directory

Ces classes possèdent les méthodes de gestion des fichiers et des répertoires (respectivement). Elles sont toutes statiques.
Ces deux classes possèdent plusieurs méthodes communes.

### Tester si un fichier ou un répertoire existe

La méthode Exists permet de tester si un chemin désigne un fichier ou un répertoire existant :
Exemple :
Si la méthode appelée est celle de la classe File et que le chemin désigne un répertoire plutôt qu'un fichier (ou vice versa), cette méthode retournera également false.

### Déplacer un fichier ou un répertoire

La méthode Move permet de déplacer un fichier ou un répertoire dans un autre répertoire, tout en le renommant :
Exemple :

### Copier un fichier

La méthode Copy de la classe File permet de copier le contenu d'un fichier dans un autre :
Le paramètre overwrite de type booléen indique si le fichier destination doit être écrasé s'il existe déjà.

### Suppression

La méthode Delete permet de supprimer un fichier ou un répertoire :

### Informations

Les méthodes suivantes donnent ou modifient les informations sur le fichier ou le répertoire donné en paramètre.

#### Dates

Ces méthodes retournent respectivement :
* la date et l'heure de création (heure locale)
* la date et l'heure de création (UTC)
Ces méthodes retournent respectivement :
* la date et l'heure du dernier accès (heure locale)
* la date et l'heure du dernier accès (UTC)
Ces méthodes retournent respectivement :
* la date et l'heure de modification (heure locale)
* la date et l'heure de modification (UTC)
Ces méthodes modifient respectivement :
* la date et l'heure de création (heure locale)
* la date et l'heure de création (UTC)
Ces méthodes modifient respectivement :
* la date et l'heure du dernier accès (heure locale)
* la date et l'heure du dernier accès (UTC)
Ces méthodes modifient respectivement :
* la date et l'heure de modification (heure locale)
* la date et l'heure de modification (UTC)

#### Contrôle d'accès

Cette méthode retourne les informations de sécurité d'un fichier.
Cette méthode retourne les informations de sécurité d'un répertoire.
Cette méthode modifie les informations de sécurité d'un fichier.
Cette méthode modifie les informations de sécurité d'un répertoire.
Les classes FileSecurity, DirectorySecurity et AccessControlSections sont définies dans l'espace de nom System.Security.AccessControl.

#### Attributs d'un fichier

La classe File possède deux méthodes pour la gestion des attributs de fichiers :
Cette méthode retourne les attributs du fichier.
Cette méthode modifie les attributs du fichier.
L'énumération FileAttributes contient les éléments suivants :
* Directory : le chemin désigne un répertoire.
* Normal : le fichier est normal.
* Archive : le fichier peut être archivé.
* Hidden : le fichier est caché.
* ReadOnly : le fichier est en lecture seule.
* System : le fichier est un fichier système.
* Compressed : le fichier est compressé (NTFS).
* Encrypted : le fichier est crypté (NTFS).
* Device
* NotContentIndexed
* Offline
* ReparsePoint
* SparseFile
* Temporary : le fichier est temporaire.

#### Répertoire courant

Les deux méthodes suivants sont définies dans la classe Directory. Le répertoire courant désigne le répertoire à partir duquel sont définis les fichiers et répertoires désignés par un chemin relatif.
Cette méthode retourne le chemin du répertoire courant de l'application.
Cette méthode défini le chemin du nouveau répertoire courant de l'application.

## Les classes FileInfo et DirectoryInfo

Une instance de la classe FileInfo (resp. DirectoryInfo) représente un fichier (resp. un répertoire), c'est à dire correspond à un chemin donné.
Ces classes permettent les mêmes fonctionnalités que celles vues précédemment, en utilisant des méthodes d'instances. Il n'y a qu'un seul constructeur qui prend comme paramètre le chemin du fichier ou répertoire.
Exemple :

### Propriétés

Les deux classes ont les propriétés communes suivantes :
La classe FileInfo a les propriétés spécifiques suivantes :
La classe DirectoryInfo a les propriétés spécifiques suivantes :