web-dev-qa-db-fra.com

Créez un fichier .txt s'il n'existe pas et s'il ajoute une nouvelle ligne

Je voudrais créer un fichier .txt et y écrire, et si le fichier existe déjà, je veux juste ajouter quelques lignes supplémentaires:

string path = @"E:\AppServ\Example.txt";
if (!File.Exists(path))
{
    File.Create(path);
    TextWriter tw = new StreamWriter(path);
    tw.WriteLine("The very first line!");
    tw.Close();
}
else if (File.Exists(path))
{
    TextWriter tw = new StreamWriter(path);
    tw.WriteLine("The next line!");
    tw.Close(); 
}

Mais la première ligne semble toujours être écrasée ... Comment puis-je éviter d'écrire sur la même ligne (je l'utilise en boucle)?

Je sais que c'est assez simple, mais je n'avais jamais utilisé la méthode WriteLine auparavant. Je suis totalement nouveau en C #.

144
Berker Yüceer

Utilisez le constructeur correct :

else if (File.Exists(path))
{
    using(var tw = new StreamWriter(path, true))
    {
        tw.WriteLine("The next line!");
    }
}
153
Daniel Hilgarth
string path = @"E:\AppServ\Example.txt";
File.AppendAllLines(path, new [] { "The very first line!" });

Voir aussi File.AppendAllText (). AppendAllLines ajoutera une nouvelle ligne à chaque ligne sans avoir à la mettre vous-même.

Les deux méthodes vont créer le fichier s'il n'existe pas, vous n'avez donc pas à le faire.

56
drch
string path=@"E:\AppServ\Example.txt";

if(!File.Exists(path))
{
   File.Create(path).Dispose();

   using( TextWriter tw = new StreamWriter(path))
   {
      tw.WriteLine("The very first line!");
   }

}    
else if (File.Exists(path))
{
   using(TextWriter tw = new StreamWriter(path))
   {
      tw.WriteLine("The next line!");
   }
}
35
Aek

Il n'est pas nécessaire de vérifier si le fichier existe, car StreamWriter le fera pour vous. Si vous l'ouvrez en mode ajout, le fichier sera créé s'il n'existe pas, vous l'ajouterez toujours et ne l'écraserez jamais. Votre vérification initiale est donc redondante.

TextWriter tw = new StreamWriter(path, true);
tw.WriteLine("The next line!");
tw.Close(); 
18
John Boling

File.AppendAllText ajoute une chaîne à un fichier. Il crée également un fichier texte s'il n'existe pas. Si vous n'avez pas besoin de lire le contenu, c'est très efficace. Le cas d'utilisation est la journalisation.

File.AppendAllText("C:\\log.txt", "hello world\n");
8
R.Cha

Vous voulez juste ouvrir le fichier en mode "Ajouter".

http://msdn.Microsoft.com/en-us/library/3zc0w663.aspx

5
Ed Manet
 else if (File.Exists(path)) 
{ 
  using (StreamWriter w = File.AppendText(path))
        {
            w.WriteLine("The next line!"); 
            w.Close();
        }
 } 
3
Smack

Lorsque vous démarrez StreamWriter, il remplace le texte qui existait auparavant. Vous pouvez utiliser la propriété append comme suit:

TextWriter t = new StreamWriter(path, true);
3
Matan Shahar

Vous pouvez utiliser un FileStream. Cela fait tout le travail pour vous.

http://www.csharp-examples.net/filestream-open-file/

2
Tom Ceuppens
using(var tw = new StreamWriter(path, File.Exists(path)))
{
    tw.WriteLine(message);
}
1
Andreas Gusakov

Essaye ça.

string path = @"E:\AppServ\Example.txt";
if (!File.Exists(path))
{
    using (var txtFile = File.AppendText(path))
    {
        txtFile.WriteLine("The very first line!");
    }
}
else if (File.Exists(path))
{     
    using (var txtFile = File.AppendText(path))
    {
        txtFile.WriteLine("The next line!");
    }
}
1
Asiri Jayaweera

À partir de la documentation Microsoft, vous pouvez créer un fichier s'il n'existe pas et y ajouter un seul appel File.AppendAllText, méthode (String, String)

.NET Framework (version actuelle) Autres versions

Ouvre un fichier, ajoute la chaîne spécifiée au fichier, puis ferme le fichier. Si le fichier n'existe pas, cette méthode crée un fichier, écrit la chaîne spécifiée dans le fichier, puis ferme le fichier. Espace de noms: System.IO Assembly: mscorlib (dans mscorlib.dll)

Syntaxe C # C++ F # VB public static void AppendAllText (chemin de la chaîne, contenu de la chaîne) Paramètres path Type: System.String Le fichier auquel ajouter la chaîne spécifiée. contents Type: System.String Chaîne à ajouter au fichier.

AppendAllText

1
David Fawzy

Vous pouvez simplement utiliser la méthode File.AppendAllText () pour résoudre votre problème. Cette méthode prendra en charge la création de fichier si non disponible, l'ouverture et la fermeture du fichier.

var outputPath = @"E:\Example.txt";
var data = "Example Data";
File.AppendAllText(outputPath, data);
0
Vijay Shaaruck