Ouvrir un fichier existant, ajouter une seule ligne

261

Je veux ouvrir un fichier texte, y ajouter une seule ligne, puis le fermer.

Blankman
la source

Réponses:

357

Vous pouvez utiliser File.AppendAllTextpour cela:

File.AppendAllText(@"c:\path\file.txt", "text content" + Environment.NewLine);
Fredrik Mörk
la source
122
using (StreamWriter w = File.AppendText("myFile.txt"))
{
  w.WriteLine("hello");
}
Gabe
la source
2
C'est la bonne façon d'écrire dans un fichier si vous générez beaucoup de lignes, pour éviter les problèmes de mémoire.
Oscar Fraxedas
81

Choisissez-en un! Mais le premier est très simple. Le dernier peut être utilisé pour la manipulation de fichiers:

//Method 1 (I like this)
File.AppendAllLines(
    "FileAppendAllLines.txt", 
    new string[] { "line1", "line2", "line3" });

//Method 2
File.AppendAllText(
    "FileAppendAllText.txt",
    "line1" + Environment.NewLine +
    "line2" + Environment.NewLine +
    "line3" + Environment.NewLine);

//Method 3
using (StreamWriter stream = File.AppendText("FileAppendText.txt"))
{
    stream.WriteLine("line1");
    stream.WriteLine("line2");
    stream.WriteLine("line3");
}

//Method 4
using (StreamWriter stream = new StreamWriter("StreamWriter.txt", true))
{
    stream.WriteLine("line1");
    stream.WriteLine("line2");
    stream.WriteLine("line3");
}

//Method 5
using (StreamWriter stream = new FileInfo("FileInfo.txt").AppendText())
{
    stream.WriteLine("line1");
    stream.WriteLine("line2");
    stream.WriteLine("line3");
}
Sergio Cabral
la source
5

Pourrait vouloir vérifier la classe TextWriter .

//Open File
TextWriter tw = new StreamWriter("file.txt");

//Write to file
tw.WriteLine("test info");

//Close File
tw.Close();
Robert Greiner
la source
2

File.AppendText le fera:

using (StreamWriter w = File.AppendText("textFile.txt")) 
{
    w.WriteLine ("-------HURRAY----------");
    w.Flush();
}
Robben_Ford_Fan_boy
la source
2

La meilleure façon technique est probablement celle-ci ici:

private static async Task AppendLineToFileAsync([NotNull] string path, string line)
{
    if (string.IsNullOrWhiteSpace(path)) 
        throw new ArgumentOutOfRangeException(nameof(path), path, "Was null or whitepsace.");

    if (!File.Exists(path)) 
        throw new FileNotFoundException("File not found.", nameof(path));

    using (var file = File.Open(path, FileMode.Append, FileAccess.Write))
    using (var writer = new StreamWriter(file))
    {
        await writer.WriteLineAsync(line);
        await writer.FlushAsync();
    }
}
MovGP0
la source
1
Seule option pour ne pas lancer d'erreur si elle est appelée en succession rapide
Alien Technology
0
//display sample reg form in notepad.txt
using (StreamWriter stream = new FileInfo("D:\\tt.txt").AppendText())//ur file location//.AppendText())
{
   stream.WriteLine("Name :" + textBox1.Text);//display textbox data in notepad
   stream.WriteLine("DOB : " + dateTimePicker1.Text);//display datepicker data in notepad
   stream.WriteLine("DEP:" + comboBox1.SelectedItem.ToString());
   stream.WriteLine("EXM :" + listBox1.SelectedItem.ToString());
}
le roi Kabil
la source
0

On peut utiliser

public StreamWriter(string path, bool append);

lors de l'ouverture du fichier

string path="C:\\MyFolder\\Notes.txt"
StreamWriter writer = new StreamWriter(path, true);

Le premier paramètre est une chaîne pour contenir un chemin de fichier complet Le deuxième paramètre est le mode d'ajout, qui dans ce cas est rendu vrai

L'écriture dans le fichier peut se faire avec:

writer.Write(string)

ou

writer.WriteLine(string)

Exemple de code

private void WriteAndAppend()
{
            string Path = Application.StartupPath + "\\notes.txt";
            FileInfo fi = new FileInfo(Path);
            StreamWriter SW;
            StreamReader SR;
            if (fi.Exists)
            {
                SR = new StreamReader(Path);
                string Line = "";
                while (!SR.EndOfStream) // Till the last line
                {
                    Line = SR.ReadLine();
                }
                SR.Close();
                int x = 0;
                if (Line.Trim().Length <= 0)
                {
                    x = 0;
                }
                else
                {
                    x = Convert.ToInt32(Line.Substring(0, Line.IndexOf('.')));
                }
                x++;
                SW = new StreamWriter(Path, true);
                SW.WriteLine("-----"+string.Format("{0:dd-MMM-yyyy hh:mm:ss tt}", DateTime.Now));
                SW.WriteLine(x.ToString() + "." + textBox1.Text);

            }
            else
            {
                SW = new StreamWriter(Path);
                SW.WriteLine("-----" + string.Format("{0:dd-MMM-yyyy hh:mm:ss tt}", DateTime.Now));
                SW.WriteLine("1." + textBox1.Text);
            }
            SW.Flush();
            SW.Close();
        }
Dennis
la source