Recherche…


Introduction

Gère les fichiers.

Syntaxe

  • new System.IO.StreamWriter(string path)
  • new System.IO.StreamWriter(string path, bool append)
  • System.IO.StreamWriter.WriteLine(string text)
  • System.IO.StreamWriter.WriteAsync(string text)
  • System.IO.Stream.Close()
  • System.IO.File.ReadAllText(string path)
  • System.IO.File.ReadAllLines(string path)
  • System.IO.File.ReadLines(string path)
  • System.IO.File.WriteAllText(string path, string text)
  • System.IO.File.WriteAllLines(string path, IEnumerable<string> contents)
  • System.IO.File.Copy(string source, string dest)
  • System.IO.File.Create(string path)
  • System.IO.File.Delete(string path)
  • System.IO.File.Move(string source, string dest)
  • System.IO.Directory.GetFiles(string path)

Paramètres

Paramètre Détails
chemin L'emplacement du fichier.
ajouter Si le fichier existe, true ajoutera des données à la fin du fichier (append), false remplacera le fichier.
texte Texte à écrire ou à stocker.
Contenu Une collection de chaînes à écrire.
la source L'emplacement du fichier que vous souhaitez utiliser.
dest L'emplacement auquel vous voulez qu'un fichier accède.

Remarques

  • Veillez toujours à fermer les objets Stream . Cela peut être fait avec un en using le bloc comme indiqué ci - dessus ou en appelant manuellement myStream.Close() .
  • Assurez-vous que l'utilisateur actuel dispose des autorisations nécessaires sur le chemin que vous essayez de créer.
  • Les chaînes verbatim doivent être utilisées lors de la déclaration d'une chaîne de chemin comprenant des barres obliques inverses, comme ceci: @"C:\MyFolder\MyFile.txt"

Lecture d'un fichier à l'aide de la classe System.IO.File

Vous pouvez utiliser la fonction System.IO.File.ReadAllText pour lire le contenu entier d'un fichier dans une chaîne.

string text = System.IO.File.ReadAllText(@"C:\MyFolder\MyTextFile.txt");

Vous pouvez également lire un fichier sous la forme d'un tableau de lignes à l'aide de la fonction System.IO.File.ReadAllLines :

string[] lines = System.IO.File.ReadAllLines(@"C:\MyFolder\MyTextFile.txt");

Écriture de lignes dans un fichier à l'aide de la classe System.IO.StreamWriter

La classe System.IO.StreamWriter :

Implémente un TextWriter pour écrire des caractères dans un flux dans un codage particulier.

En utilisant la méthode WriteLine , vous pouvez écrire du contenu ligne par ligne dans un fichier.

Notez l'utilisation du mot-clé using qui garantit que l'objet StreamWriter est éliminé dès qu'il est hors de portée et donc le fichier est fermé.

string[] lines = { "My first string", "My second string", "and even a third string" };
using (System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\MyFolder\OutputText.txt"))
{
    foreach (string line in lines)
    {
        sw.WriteLine(line);
    }
}

Notez que StreamWriter peut recevoir un second paramètre bool dans son constructeur, ce qui permet d' Append un fichier au lieu de remplacer le fichier:

bool appendExistingFile = true;
using (System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\MyFolder\OutputText.txt", appendExistingFile ))
{
    sw.WriteLine("This line will be appended to the existing file");
}

Écriture dans un fichier à l'aide de la classe System.IO.File

Vous pouvez utiliser la fonction System.IO.File.WriteAllText pour écrire une chaîne dans un fichier.

string text = "String that will be stored in the file";
System.IO.File.WriteAllText(@"C:\MyFolder\OutputFile.txt", text);

Vous pouvez également utiliser la fonction System.IO.File.WriteAllLines qui reçoit un IEnumerable<String> comme second paramètre (par opposition à une seule chaîne dans l'exemple précédent). Cela vous permet d'écrire du contenu à partir d'un tableau de lignes.

string[] lines = { "My first string", "My second string", "and even a third string" };
System.IO.File.WriteAllLines(@"C:\MyFolder\OutputFile.txt", lines);

Lentement lire un fichier ligne par ligne via un IEnumerable

Lorsque vous travaillez avec des fichiers volumineux, vous pouvez utiliser la méthode System.IO.File.ReadLines pour lire toutes les lignes d'un fichier dans une IEnumerable<string> . Ceci est similaire à System.IO.File.ReadAllLines , sauf qu’il ne charge pas tout le fichier en mémoire en même temps, ce qui le rend plus efficace lorsque vous travaillez avec des fichiers volumineux.

IEnumerable<string> AllLines = File.ReadLines("file_name.txt", Encoding.Default);

Le deuxième paramètre de File.ReadLines est facultatif. Vous pouvez l'utiliser lorsque cela est nécessaire pour spécifier l'encodage.

Il est important de noter qu'appeler ToArray , ToList ou une autre fonction similaire forcera toutes les lignes à être chargées en une fois, ce qui signifie que les avantages de l'utilisation de ReadLines sont annulés. Il est préférable d'énumérer sur IEnumerable utilisant une boucle foreach ou LINQ si vous utilisez cette méthode.

Créer un fichier

Classe statique de fichier

En utilisant la méthode Create de la classe statique File , nous pouvons créer des fichiers. Méthode crée le fichier sur le chemin donné, en même temps, il ouvre le fichier et nous donne le FileStream du fichier. Assurez-vous de fermer le fichier lorsque vous en avez terminé.

ex1:

var fileStream1 = File.Create("samplePath");
/// you can write to the fileStream1
fileStream1.Close();

ex2:

using(var fileStream1 = File.Create("samplePath"))
{
    /// you can write to the fileStream1
}

ex3:

File.Create("samplePath").Close();

Classe FileStream

Il y a beaucoup de surcharges de ce constructeur de classes, ce qui est bien documenté ici . L'exemple ci-dessous concerne celui qui couvre les fonctionnalités les plus utilisées de cette classe.

var fileStream2 = new FileStream("samplePath", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);

Vous pouvez vérifier les énumérations pour FileMode , FileAccess et FileShare à partir de ces liens. Ce qu'ils signifient essentiellement sont les suivants:

FileMode: Réponses "Le fichier doit-il être créé? Ouvert? Créer s'il n'existe pas alors ouvert?" un peu de questions.

FileAccess: Réponses "Dois-je pouvoir lire le fichier, écrire dans le fichier ou les deux?" un peu de questions.

FileShare: Réponses "Les autres utilisateurs devraient-ils pouvoir lire, écrire, etc. sur le fichier alors que je l'utilise simultanément?" un peu de questions.

Copier un fichier

Classe statique de fichier

File classe statique de File peut être facilement utilisée à cette fin.

File.Copy(@"sourcePath\abc.txt", @"destinationPath\abc.txt");
File.Copy(@"sourcePath\abc.txt", @"destinationPath\xyz.txt");

Remarque: Par cette méthode, le fichier est copié, ce qui signifie qu'il sera lu à partir de la source, puis écrit dans le chemin de destination. Ce processus consomme beaucoup de ressources, sa durée est relativement longue et votre programme peut se bloquer si vous n'utilisez pas de threads.

Déplacer un fichier

Classe statique de fichier

La classe statique de fichier peut facilement être utilisée à cette fin.

File.Move(@"sourcePath\abc.txt", @"destinationPath\xyz.txt");

Remarque 1: Change uniquement l’index du fichier (si le fichier est déplacé dans le même volume). Cette opération ne prend pas de temps relatif à la taille du fichier.

Remarque 2: Impossible de remplacer un fichier existant sur le chemin de destination.

Supprimer le fichier

string path = @"c:\path\to\file.txt";
File.Delete(path);

Bien que Delete ne Delete pas d'exception si le fichier n'existe pas, il lancera une exception, par exemple si le chemin spécifié n'est pas valide ou si l'appelant ne dispose pas des autorisations requises. Vous devez toujours placer les appels à Delete dans le bloc try-catch et gérer toutes les exceptions attendues. En cas de conditions de concurrence possibles, encapsulez la logique dans la déclaration de verrouillage .

Fichiers et répertoires

Obtenir tous les fichiers dans le répertoire

 var FileSearchRes = Directory.GetFiles(@Path, "*.*", SearchOption.AllDirectories);

Retourne un tableau de FileInfo , représentant tous les fichiers du répertoire spécifié.

Obtenir des fichiers avec une extension spécifique

 var FileSearchRes = Directory.GetFiles(@Path, "*.pdf", SearchOption.AllDirectories);

Retourne un tableau de FileInfo , représentant tous les fichiers du répertoire spécifié avec l'extension spécifiée.

Async écrire du texte dans un fichier à l'aide de StreamWriter

// filename is a string with the full path
// true is to append        
using (System.IO.StreamWriter file = new System.IO.StreamWriter(filename, true))
{
   // Can write either a string or char array
   await file.WriteAsync(text);
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow