Manipulation de fichiers et de répertoires dans C#
1. La hiérarchie de classes
Class | Description |
File | File is a utility class. It provides static methods for the creation, copying, deletion, moving, and opening of a single file, and aids in the creation of FileStreamobjects. |
Directory | Directory is a utility class, It provides static methods for creating, moving, and enumerating through directories and subdirectories. This class cannot be inherited. |
FileInfo | FileInfo is a class that represents a file. It provides properties and instance methods for the creation, copying, deletion, moving, and opening of files, and aids in the creation of FileStream objects. This class cannot be inherited. |
DirectoryInfo | DirectoryInfo is a class representing a directory. It provides methods for creating, moving, and enumerating through directories and subdirectories. This class cannot be inherited. |
DriveInfo | DirveInfo is a class, it provides access to information on a drive. |
2. File
File est une classe d'utilitaire. Elle fournit des méthodes statistiques pour la création, le copiage, l'effacement, le déplacement et l'ouverture d'un fichier et fournit l'objet FileStream.
L'exemple ci- dessous vérifie si un chemin du fichier existe ou pas, efface ce fichier s'il existe.
DeleteFileDemo.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace FileDirectoryTutorial
{
class DeleteFileDemo
{
public static void Main(string[] args)
{
string filePath = "C:/test/test.txt";
// Vérifiez si le chemin existe ou non\?
if (File.Exists(filePath))
{
// Effacez le fichier
File.Delete(filePath);
// Revérifiez encore une fois l'existence du fichier.
if (!File.Exists(filePath))
{
Console.WriteLine("File deleted...");
}
}
else
{
Console.WriteLine("File test.txt does not yet exist!");
}
Console.ReadKey();
}
}
}
Exécution l'exemple:
File deleted...
Le changement le nom du fichier peut comprendre de déplacer le fichier à un autre fichier et de changer le nom du fichier. Au cas où le déplacement à un autre fichier pour assurer que le fichier existe.
RenameFileDemo.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace FileDirectoryTutorial
{
class RenameFileDemo
{
public static void Main(string[] args)
{
String filePath = "C:/test/test.txt";
if (File.Exists(filePath))
{
Console.WriteLine(filePath + " exist");
Console.WriteLine("Please enter a new name for this file:");
// Une String que l'utilisateur saisait.
// Exemple: C:/test/test2.txt
string newFilename = Console.ReadLine();
if (newFilename != String.Empty)
{
// Renommez le fichier:
// Peut inclure le déplacement du fichier vers un autre dossier et le renommage du fichier.
// Vous devez vous assurer que le dossier de destination existe.
// (Sinon, DirectoryNotFoundException sera lancé).
File.Move(filePath, newFilename);
if (File.Exists(newFilename))
{
Console.WriteLine("The file was renamed to " + newFilename);
}
}
}
else
{
Console.WriteLine("Path " + filePath + " does not exist.");
}
Console.ReadLine();
}
}
}
L'exécution de l'exemple:
C:/test/test.txt exist
Please enterr a new name for this file:
C:/test/test2.txt
The file was renamed to C:/test/test2.txt
3. Directory
Directory est une classe d'utilitaire. Elle fournit des méthodes statistiques pour la création, le déplacement et l'énumération à travers des répertoires et des sous- répertoires. Cette classe n'a pas de classes héritères.
Par exemple, vérifiez si le chemin du répertoire existe ou pas, s'il n'existe pas, créez ledit répertoire, imprimez le temps de la création, la dernière fois d'écriture, ...
DirectoryInformationDemo.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace FileDirectoryTutorial
{
class DirectoryInformationDemo
{
public static void Main(string[] args)
{
String dirPath = "C:/test/CSharp";
// Vérifiez si un chemin d'accès au répertoire existe ou non.
bool exist = Directory.Exists(dirPath);
// Si ce n'est pas le cas, créez-le
if (!exist)
{
Console.WriteLine(dirPath + " does not exist.");
Console.WriteLine("Create directory: " + dirPath);
// Créez le répertoire.
Directory.CreateDirectory(dirPath);
}
Console.WriteLine("Directory Information " + dirPath);
// Imprimer les infos de ce ledit répertoire
// Temps de creation
Console.WriteLine("Creation time: "+ Directory.GetCreationTime(dirPath));
// Dernier temps de l'écriture.
Console.WriteLine("Last Write Time: " + Directory.GetLastWriteTime(dirPath));
// Répertoire parent.
DirectoryInfo parentInfo = Directory.GetParent(dirPath);
Console.WriteLine("Parent directory: " + parentInfo.FullName);
Console.Read();
}
}
}
Exécutez l'exemple:
Directory Information C:/test/CSharp
Creation time: 12/5/2015 9:46:10 PM
Last Write Time: 12/5/2015 9:46:10 PM
Parent directory: C:\test
Changement le nom du fichier:
Vous pouvez changer le nom d'un fichier. Il peut être déplacer ledit fichier à un répertoire parent qui existe déjà. Mais vous devez assurer que le nouveau répertoire parent doit déjà exister. L'exemple ci- dessous illustre comment changer le nom du fichier:
RenameDirectoryDemo.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace FileDirectoryTutorial
{
class RenameDirectoryDemo
{
public static void Main(string[] args)
{
// Un chemin d'accès d'un répertoire.
String dirPath = "C:/test/CSharp";
// Si ce chemin existe.
if (!Directory.Exists(dirPath))
{
Console.WriteLine(dirPath + " does not exist.");
Console.Read();
return;
}
Console.WriteLine(dirPath + " exist");
Console.WriteLine("Please enter a new name for this directory:");
// La chaine (String) que l'utilisateur saisit.
// Par exemple: C:/test2/Java
string newDirname = Console.ReadLine();
if (newDirname == String.Empty)
{
Console.WriteLine("You not enter new directory name. Cancel rename.");
Console.Read();
return;
}
// Si le chemin saisit par l'utilisateur existe.
if (Directory.Exists(newDirname))
{
Console.WriteLine("Cannot rename directory. New directory already exist.");
Console.Read();
return;
}
// Le répertoire parent.
DirectoryInfo parentInfo = Directory.GetParent(newDirname);
// Créez le répertoire parent du nouveau dossier que l'utilisateur saisit.
Directory.CreateDirectory(parentInfo.FullName);
// Vous pouvez changer le chemin (path) d'un répertoire.
// mais assurez-vous que le chemin parent du nouveau chemin existe.
// (Si non, DirectoryNotFoundException sera enlevé).
Directory.Move(dirPath, newDirname);
if (Directory.Exists(newDirname))
{
Console.WriteLine("The directory was renamed to " + newDirname);
}
Console.ReadLine();
}
}
}
Exécutez l'exemple:
C:/test/CSharp exist
Please enter a new name for this directory:
C:/test2/Java
The directory was renamed to C:/test2/Java
L'exemple de récursion suivant imprime tous les sous- répertoires, les petits- enfants,... d'un fichier.
EnumeratingDirectoryDemo.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace FileDirectoryTutorial
{
class EnumeratingDirectoryDemo
{
public static void Main(string[] args)
{
string dirPath = "C:/Windows/System32";
PrintDirectory(dirPath);
Console.Read();
}
// La méthode récursive (Recursive) pour lister les sous-dossiers d'un dossier..
public static void PrintDirectory(string dirPath)
{
try
{
// Si vous n'avez pas un accès suffisant au dossier 'dirPath'
// une exception UnauthorizedAccessException sera enlevée.
IEnumerable<string> enums = Directory.EnumerateDirectories(dirPath);
List<string> dirs = new List<string>(enums);
foreach (var dir in dirs)
{
Console.WriteLine(dir);
// La méthode récursive (Recursive) pour rechercher des sous-dossiers.
PrintDirectory(dir);
}
}
// L'rrreur de sécurité lors de l'accès au répertoire où vous n'avez pas d'autorisation.
catch (UnauthorizedAccessException e)
{
Console.WriteLine("Can not access directory: " + dirPath);
Console.WriteLine(e.Message);
}
}
}
}
Exécutez l'exemple:
...
C:/Windows/System32\wbem\en-US
C:/Windows/System32\wbem\Logs
C:/Windows/System32\wbem\Repository
C:/Windows/System32\wbem\tmf
C:/Windows/System32\wbem\eml
C:/Windows/System32\WCN
C:/Windows/System32\WCN\en-US
...
4. FileInfo
FileInfo est une classe qui représente un fichier. Elle fournit des propriétés et des méthodes d'instance pour la création, le copiage, l'effacement, le déplacement et l'ouverture d'un fichier et aide dans la création les objets de FileStream. Cette classe n'a pas de classes héritères.
La différence entre 2 classes File et FileInfo est que la classe File est une classe d'utilitaire dont les méthodes sont statiques, alors que la classe FileInfo représente un fichier particulier.
FileInfoDemo.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace FileDirectoryTutorial
{
class FileInfoDemo
{
static void Main(string[] args)
{
// Un objet qui représente un fichier.
FileInfo testFile = new FileInfo("C:/test/test.txt");
if (testFile.Exists)
{
Console.WriteLine(testFile.FullName + " exist.");
// Le moment de la création du fichier.
Console.WriteLine("Creation time: " + testFile.CreationTime);
// La dernière heure d'écriture.
Console.WriteLine("Last Write Time " + testFile.LastWriteTime);
// Le nom du répertoire parent qui comprend ce fichier.
Console.WriteLine("Directory Name: " + testFile.DirectoryName);
}
else
{
Console.WriteLine(testFile.FullName + " does not exist.");
}
Console.Read();
}
}
}
Exécutez l'exemple:
C:\test\test.txt exist.
Creation time: 12/5/2015 7:47:40 PM
Last Write Time 12/5/2015 10:17:29 PM
Directory Name: C:\test
Le changement le nom du fichier est une action spécifique qui comprend le déplacement d'un fichier à un autre fichier et le changement le nom du fichier. Au cas où, le fichier est déplacé à un autre fichier pour assurer le nouveau fichier existe.
RenameFileInfoDemo.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace FileDirectoryTutorial
{
class RenameFileInfoDemo
{
public static void Main(string[] args)
{
FileInfo fileInfo = new FileInfo("C:/test/test.txt");
if (!fileInfo.Exists)
{
Console.WriteLine(fileInfo.FullName + " does not exist.");
Console.Read();
return;
}
Console.WriteLine(fileInfo.FullName + " exist");
Console.WriteLine("Please enter a new name for this file:");
// Une chaine (string) que l'utilisateur saisit.
// Par exemple: C:/test/test2.txt
string newFilename = Console.ReadLine();
if (newFilename == String.Empty)
{
Console.WriteLine("You not enter new file name. Cancel rename");
Console.Read();
return;
}
FileInfo newFileInfo = new FileInfo(newFilename);
// Si le fichier 'newFileInfo' existe (Impossible de renommer).
if (newFileInfo.Exists)
{
Console.WriteLine("Can not rename file to " + newFileInfo.FullName + ". File already exist.");
Console.Read();
return;
}
// Créez le répertoire parent du fichier 'newFileInfo'.
newFileInfo.Directory.Create();
// Renommez le nom du fichier.
fileInfo.MoveTo(newFileInfo.FullName);
// Refresh.
newFileInfo.Refresh();
if (newFileInfo.Exists)
{
Console.WriteLine("The file was renamed to " + newFileInfo.FullName);
}
Console.ReadLine();
}
}
}
Exécutez l'exemple:
C:\test\test.txt exist
Please enter a new name for this file:
C:/test2/test2.txt
The file was renamed to C:\test2\test2.txt
5. DirectoryInfo
DirectoryInfo est une classe qui représente un fichier. Elle fournit des méthodes pour la création, le déplacement, l'énumération à travers des répertoires et des sous- répertoires. Cette classe n'a pas de classes héritères.
La différence entre 2 classes Directory et DirectoryInfo est que la classe Directory est une classe d'utilitaire dont les méthodes sont statiques, alors que la classe DirectoryInfo représente un fichier spécifique.
DirectoryInfoDemo.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace FileDirectoryTutorial
{
class DirectoryInfoDemo
{
static void Main(string[] args)
{
// Un objet représentant un répertoire.
DirectoryInfo dirInfo = new DirectoryInfo("C:/Windows/System32/drivers");
// Ecrivez le temps de création du fichier.
Console.WriteLine("Creation time: " + dirInfo.CreationTime);
// Écrivez la dernière heure d'écriture du fichier.
Console.WriteLine("Last Write Time " + dirInfo.LastWriteTime);
// Le nom complet du répertoire.
Console.WriteLine("Directory Name: " + dirInfo.FullName);
// Le tableau de sous-dossiers.
DirectoryInfo[] childDirs = dirInfo.GetDirectories();
// Un tableau de fichiers dans le dossier.
FileInfo[] childFiles = dirInfo.GetFiles();
foreach(DirectoryInfo childDir in childDirs ){
Console.WriteLine(" - Directory: " + childDir.FullName);
}
foreach (FileInfo childFile in childFiles)
{
Console.WriteLine(" - File: " + childFile.FullName);
}
Console.Read();
}
}
}
Exécutez l'exemple:
Creation time: 7/14/2009 10:20:14 AM
Last Write Time 11/21/2010 2:06:51 PM
Directory Name: C:\Windows\System32\drivers
- Directory: C:\Windowws\System32\drivers\en-US
- File: C:\Windowws\System32\gm.dls
- File: C:\Windowws\System32\gmreadme.txt
- File: C:\Windowws\System32\winmount.sys
6. DriveInfo
DirveInfo est une classe. Elle founit des méthodes d'accès des informations dans un lecteur.
DriveInfoDemo.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace FileDirectoryTutorial
{
class DriveInfoDemo
{
static void Main(string[] args)
{
DriveInfo[] drives = DriveInfo.GetDrives();
foreach (DriveInfo drive in drives)
{
Console.WriteLine(" ============================== ");
// Nom du lecteur (C, D, ..)
Console.WriteLine("Drive {0}", drive.Name);
// Le type de lecteur (Removable,..)
Console.WriteLine(" Drive type: {0}", drive.DriveType);
// Si le lecteur est prêt.
if (drive.IsReady)
{
Console.WriteLine(" Volume label: {0}", drive.VolumeLabel);
Console.WriteLine(" File system: {0}", drive.DriveFormat);
Console.WriteLine(
" Available space to current user:{0, 15} bytes",
drive.AvailableFreeSpace);
Console.WriteLine(
" Total available space: {0, 15} bytes",
drive.TotalFreeSpace);
Console.WriteLine(
" Total size of drive: {0, 15} bytes ",
drive.TotalSize);
}
}
Console.Read();
}
}
}
Exécutez l'exemple:
Tutoriels de programmation C#
- Héritage et polymorphisme en C#
- De quoi avez-vous besoin pour démarrer avec C#?
- Apprenez rapidement à développer en C# pour débutant
- Installer Visual Studio 2013 sur Windows
- Classe abstraite et interface dans C#
- Installer Visual Studio 2015 sur Windows
- Compression et décompression dans C#
- Tutoriel de programmation multithread C#
- Tutoriel C# Delegate et Event
- Installer AnkhSVN sur Windows
- Programmation C# pour l'équipe utilisant Visual Studio et SVN
- Installer .Net Framework
- Modificateur d'accès (Access Modifier) en C#
- Le Tutoriel de C# String et de StringBuilder
- Le Tutoriel de C# Properties
- Le Tutoriel de C# Enum
- Le Tutoriel de C# Structure
- Le Tutoriel de C# Generics
- Tutoriel sur la gestion des exceptions C#
- Le Tutoriel de C# Date Time
- Manipulation de fichiers et de répertoires dans C#
- Tutoriel C# Stream - flux binaire en C#
- Le Tutoriel d'expressions régulières C#
- Se Connecter à la base de données SQL Server dans C#
- Travailler avec la base de données SQL Server dans C#
- Connectez-vous à la base de données MySQL dans C#
- Travailler avec la base de données MySQL dans C#
- Connectez-vous à la base de données Oracle dans CSharp sans Oracle Client
- Utilisation d'une base de données Oracle en utilisant C#
Show More