Chciałbym stworzyć plik .txt i napisać do niego, a jeśli plik już istnieje, chcę tylko dodać kilka wierszy:
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();
}
Ale wydaje się, że pierwsza linia zawsze jest nadpisywana ... jak mogę uniknąć pisania w tej samej linii (używam tego w pętli)?
Wiem, że to dość prosta rzecz, ale nigdy wcześniej nie korzystałem z tej WriteLine
metody. Jestem zupełnie nowy w C #.
File.Open
wewnętrznie deleguje do funkcji WinAPI (patrz następny komentarz), miejmy nadzieję, że zapobiega wyścigowi. Większość rozwiązań tutaj tego nie robi i są one oczywiście uzależnione od warunków wyścigu.
if (file exists) { open file }
jest prawie zawsze błędny we wszystkich językach programowania! W przypadku platformy .NET rozwiązaniem jest użycieFile.Open(path, FileMode.Append, FileAccess.ReadWrite)
odpowiednich flag.