Comment : obtenir des informations sur les fichiers, dossiers et lecteurs (Guide de programmation C#)
Dans le .NET Framework, vous pouvez accéder aux informations de système de fichiers à l'aide des classes suivantes :
Les classes FileInfo et DirectoryInfo représentent un fichier ou un répertoire et contiennent des propriétés qui exposent nombre des attributs de fichier pris en charge par le système de fichiers NTFS. Elles contiennent également des méthodes pour ouvrir, fermer, déplacer et supprimer des fichiers et des dossiers. Vous pouvez créer des instances de ces classes en passant une chaîne qui représente le nom du fichier, du dossier ou du lecteur au constructeur :
System.IO.DriveInfo di = new System.IO.DriveInfo(@"C:\");
Vous pouvez également obtenir les noms des fichiers, des dossiers ou des lecteurs en appelant DirectoryInfo.GetDirectories, DirectoryInfo.GetFiles et DriveInfo.RootDirectory.
Les classes Directory et File fournissent des méthodes statiques permettant d'extraire des informations sur des répertoires et des fichiers.
Exemple
L'exemple suivant montre diverses manières d'accéder aux informations relatives aux fichiers et aux dossiers.
class FileSysInfo
{
static void Main()
{
// You can also use System.Environment.GetLogicalDrives to
// obtain names of all logical drives on the computer.
System.IO.DriveInfo di = new System.IO.DriveInfo(@"C:\");
Console.WriteLine(di.TotalFreeSpace);
Console.WriteLine(di.VolumeLabel);
// Get the root directory and print out some information about it.
System.IO.DirectoryInfo dirInfo = di.RootDirectory;
Console.WriteLine(dirInfo.Attributes.ToString());
// Get the files in the directory and print out some information about them.
System.IO.FileInfo[] fileNames = dirInfo.GetFiles("*.*");
foreach (System.IO.FileInfo fi in fileNames)
{
Console.WriteLine("{0}: {1}: {2}", fi.Name, fi.LastAccessTime, fi.Length);
}
// Get the subdirectories directly that is under the root.
// See "How to: Iterate Through a Directory Tree" for an example of how to
// iterate through an entire tree.
System.IO.DirectoryInfo[] dirInfos = dirInfo.GetDirectories("*.*");
foreach (System.IO.DirectoryInfo d in dirInfos)
{
Console.WriteLine(d.Name);
}
// The Directory and File classes provide several static methods
// for accessing files and directories.
// Get the current application directory.
string currentDirName = System.IO.Directory.GetCurrentDirectory();
Console.WriteLine(currentDirName);
// Get an array of file names as strings rather than FileInfo objects.
// Use this method when storage space is an issue, and when you might
// hold on to the file name reference for a while before you try to access
// the file.
string[] files = System.IO.Directory.GetFiles(currentDirName, "*.txt");
foreach (string s in files)
{
// Create the FileInfo object only when needed to ensure
// the information is as current as possible.
System.IO.FileInfo fi = null;
try
{
fi = new System.IO.FileInfo(s);
}
catch (System.IO.FileNotFoundException e)
{
// To inform the user and continue is
// sufficient for this demonstration.
// Your application may require different behavior.
Console.WriteLine(e.Message);
continue;
}
Console.WriteLine("{0} : {1}",fi.Name, fi.Directory);
}
// Change the directory. In this case, first check to see
// whether it already exists, and create it if it does not.
// If this is not appropriate for your application, you can
// handle the System.IO.IOException that will be raised if the
// directory cannot be found.
if (!System.IO.Directory.Exists(@"C:\Users\Public\TestFolder\"))
{
System.IO.Directory.CreateDirectory(@"C:\Users\Public\TestFolder\");
}
System.IO.Directory.SetCurrentDirectory(@"C:\Users\Public\TestFolder\");
currentDirName = System.IO.Directory.GetCurrentDirectory();
Console.WriteLine(currentDirName);
// Keep the console window open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
Programmation fiable
Lorsque vous traitez des chaînes de chemin d'accès spécifiées par l'utilisateur, vous devez également gérer les exceptions levées dans les cas suivants :
Le nom de fichier est incorrect. Il contient par exemple des caractères non valides ou se compose uniquement d'un espace blanc.
Le nom de fichier est null.
Le nom de fichier dépasse la longueur maximale définie par le système.
Le nom de fichier comporte le signe deux-points (:).
Si l'application ne dispose pas des autorisations nécessaires pour lire le fichier spécifié, la méthode Exists retourne false, qu'il existe ou non un chemin d'accès, mais ne lève pas d'exception.