English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

FileInfo C#

 Dans ce tutoriel, vous apprendrez à utiliser la classe FileInfo pour effectuer des lectures sur des fichiers physiques./Opérations d'écriture.

La classe FileInfo fournit les mêmes fonctionnalités que la classe File statique, mais vous pouvez contrôler la lecture et l'écriture des fichiers en écrivant manuellement le code pour lire ou écrire des octets à partir de fichiers./Les opérations d'écriture ont plus de contrôle.

Les propriétés et méthodes importantes de FileInfo :

PropriétésUtilisation
DirectoryObtenez une instance du répertoire parent.
DirectoryNameObtenez une chaîne représentant le chemin complet du répertoire.
ExistsObtenez une valeur indiquant si le fichier existe.
ExtensionObtenez une chaîne représentant la partie de l'extension du fichier.
FullNameObtenez le chemin complet du répertoire ou du fichier.
IsReadOnlyObtenez ou définissez une valeur qui indique si le fichier actuel est en lecture seule.
LastAccessTimeObtenez ou définissez le temps de la dernière accès au fichier ou au répertoire actuel.
LastWriteTimeObtenez ou définissez le temps de la dernière écriture du fichier ou du répertoire actuel.
LengthObtenez la taille actuelle du fichier en octets.
NameObtenez le nom du fichier.
MéthodeUtilisation
AppendTextCréez un StreamWriter pour ajouter du texte au fichier représenté par cette instance de FileInfo.
CopyToCopiez le fichier existant vers un nouveau fichier sans permettre de couvrir le fichier existant.
CreateCréez un fichier.
CreateTextCréez un StreamWriter pour écrire dans un nouveau fichier texte.
DecryptDécryptez le fichier crypté par le compte actuel en utilisant la méthode Encrypt.
DeleteSupprimez le fichier spécifié.
EncryptCryptez le fichier de sorte que seules les comptes utilisés pour crypter le fichier puissent le déchiffrer.
GetAccessControlObtenez un objet FileSecurity qui encapsule les entrées de la liste de contrôle d'accès (ACL) du fichier spécifié.
MoveToDéplacez le fichier spécifié vers une nouvelle position et fournissez l'option de nouveau nom de fichier.
OpenOuvrez un dans le FileMode spécifié.
OpenReadCréez un FileStream en lecture.
OpenTextCréez un fichier avec UTF8StreamReader codé, l'encodeur peut lire un fichier texte existant.
OpenWriteCréez un FileStream en écriture.
ReplaceRemplacez le contenu du fichier spécifié par l'objet FileInfo actuel, supprimez le fichier original et créez une sauvegarde du fichier de remplacement.
ToStringPour retourner le chemin sous forme de chaîne.

L'exemple suivant montre comment lire manuellement des octets à partir de fichiers, puis utiliser UTF8编码将它们转换为字符串 :

Exemple : lire un fichier avec la classe FileInfo

//Créer un objet FileInfo pour le chemin spécifié            
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");
//Ouvrir le fichier pour lecture/écriture
FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); 
//Créez un tableau de bytes de la même taille que la longueur du FileStream
byte[] fileBytes = new byte[fs.Length];
//Définissez un compteur pour vérifier combien d'octets doivent être lus. Diminuez le compteur à chaque lecture d'un octet
int numBytesToRead = (int)fileBytes.Length;
//Le compteur indique le nombre d'octets lus
int numBytesRead = 0;
//Itère jusqu'à ce que tous les octets du FileStream soient lus
while (numBytesToRead > 0)
{
    int n = fs.Read(fileBytes, numBytesRead, numBytesToRead);
        
    if (n == 0)
        break;
    numBytesRead += n;
    numBytesToRead -= n;
}
//Après avoir lu tous les octets du FileStream, vous pouvez utiliser UTF8编码将其转换为字符串
string filestring = Encoding.UTF8.GetString(fileBytes);

Comme indiqué dans le code ci-dessus, vous devez écrire beaucoup de code pour lire à partir de FileSream/Écrire une chaîne de caractères. En utilisant StreamReader et StreamWriter, vous pouvez facilement effectuer la même lecture/Opérations d'écriture.

L'exemple suivant montre comment StreamReader rend facile la lecture de chaînes de caractères à partir de fichiers :

Exemple : lire un fichier avec StreamReader

//Créer un objet FileInfo pour le chemin spécifié            
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");
        
//Ouvrir le fichier pour lecture/écriture
FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read); 
//Créez un objet StreamReader en passant un objet FileStream que vous devez manipuler
StreamReader sr = new StreamReader(fs);
//Utilisez la méthode ReadToEnd pour lire tout le contenu du fichier
string fileContent = sr.ReadToEnd();
//Fermez l'objet StreamReader après l'opération
sr.Close();
fs.Close();

Notez que fi.Open() a trois paramètres :

  • Le premier paramètre est FileMode, utilisé pour créer et ouvrir un fichier (si le fichier n'existe pas) ;

  • Le second paramètre FileAccess représente l'opération de lecture ;

  • Le troisième paramètre est de partager le fichier avec d'autres utilisateurs pour la lecture lors de l'ouverture du fichier.

L'exemple suivant montre comment StreamWriter rend plus facile l'écriture de chaînes dans un fichier :

Exemple : Utiliser StreamWriter pour écrire du texte dans un fichier

//Créer un objet FileInfo pour le chemin spécifié            
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");
        
//Ouvrir le fichier pour lecture/écriture
FileStream fs = fi.Open(FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read); 
//Créer un objet StreamWriter pour écrire une chaîne dans le FileStream
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("Another line from streamwriter");
sw.Close();

Il n'est pas possible d'exécuter des opérations de lecture et d'écriture sur le même objet FileStream. Si vous lisez déjà un fichier, créez un objet FileStream distinct pour écrire dans le même fichier, comme suit :

Exemple : StreamReader et StreamWriter

//Créer un objet FileInfo pour DummyFile.txt
FileInfo fi = new FileInfo(@"D:\DummyFile.txt");
//Ouvrir DummyFile.txt pour la lecture
FileStream fsToRead = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); 
//Ouvrir DummyFile.txt pour l'écriture
FileStream fsToWrite = fi.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); 
          
//Obtenir StreamReader
StreamReader sr = new StreamReader(fsToRead);
//Utiliser l'objet StreamReader pour lire tout le texte
string fileContent = sr.ReadToEnd();
sr.Close();
//Obtenir StreamWriter
StreamWriter sw = new StreamWriter(fsToWrite);
//Écrire quelques mots avec StreamWriter
sw.WriteLine("Another line from streamwriter");
sw.Close();
//Fermez tous les objets Stream
fsToRead.Close();
fsToWrite.Close();

Par conséquent, vous pouvez utiliser les classes FileInfo, StreamReader et StreamWriter pour lire les fichiers physiques/Écrire le contenu.