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 éviter d'écrire sur la même ligne (j'utilise ceci en boucle)?
Je sais que c'est une chose assez simple, mais je n'ai jamais utilisé la WriteLine
méthode auparavant. Je suis totalement nouveau sur C #.
File.Open
délègue en interne à une fonction WinAPI (voir le commentaire suivant), espérons-le, empêchant la condition de concurrence. La plupart des solutions ici ne font pas cela et sont assez évidemment soumises aux conditions de course.
if (file exists) { open file }
est presque toujours faux dans tous les langages de programmation! Pour .NET, la solution consiste à utiliserFile.Open(path, FileMode.Append, FileAccess.ReadWrite)
avec les indicateurs appropriés.