Öffnen Sie die vorhandene Datei und fügen Sie eine einzelne Zeile hinzu

260

Ich möchte eine Textdatei öffnen, eine einzelne Zeile an sie anhängen und sie dann schließen.

Blankman
quelle

Antworten:

356

Sie können dafür verwenden File.AppendAllText:

File.AppendAllText(@"c:\path\file.txt", "text content" + Environment.NewLine);
Fredrik Mörk
quelle
121
using (StreamWriter w = File.AppendText("myFile.txt"))
{
  w.WriteLine("hello");
}
Gabe
quelle
2
Dies ist der richtige Weg, um in eine Datei zu schreiben, wenn Sie viele Zeilen generieren, um Speicherprobleme zu vermeiden.
Oscar Fraxedas
81

Wahl eins! Aber das erste ist sehr einfach. Der letzte Nutzen für die Dateimanipulation:

//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
quelle
5

Vielleicht möchten Sie die TextWriter- Klasse auschecken .

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

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

//Close File
tw.Close();
Robert Greiner
quelle
2

File.AppendText erledigt dies:

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

Der technisch beste Weg ist wahrscheinlich hier:

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
quelle
1
Einzige Option, keinen Fehler zu werfen, wenn er schnell hintereinander aufgerufen wird
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());
}
König Kabil
quelle
0

Wir können benutzen

public StreamWriter(string path, bool append);

beim Öffnen der Datei

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

Der erste Parameter ist eine Zeichenfolge, die einen vollständigen Dateipfad enthält. Der zweite Parameter ist der Append-Modus, der in diesem Fall auf true gesetzt wird

Das Schreiben in die Datei kann erfolgen mit:

writer.Write(string)

oder

writer.WriteLine(string)

Beispielcode

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
quelle