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 #.
Utilisez le constructeur correct :
else if (File.Exists(path))
{
using(var tw = new StreamWriter(path, true))
{
tw.WriteLine("The next line!");
}
}
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.
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!");
}
}
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();
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");
Vous voulez juste ouvrir le fichier en mode "Ajouter".
else if (File.Exists(path))
{
using (StreamWriter w = File.AppendText(path))
{
w.WriteLine("The next line!");
w.Close();
}
}
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);
Vous pouvez utiliser un FileStream. Cela fait tout le travail pour vous.
using(var tw = new StreamWriter(path, File.Exists(path)))
{
tw.WriteLine(message);
}
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!");
}
}
À 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.
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);