Я хотел бы создать файл .txt и записать в него, и если файл уже существует, я просто хочу добавить еще несколько строк:
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();
}
Но первая строка, кажется, всегда перезаписывается ... как я могу избежать записи в одной строке (я использую это в цикле)?
Я знаю, что это довольно простая вещь, но я никогда не использовал этот WriteLine
метод раньше. Я совершенно новичок в C #.
File.Open
внутренне делегирует функцию WinAPI (см. Следующий комментарий), надеясь предотвратить состояние гонки. Большинство решений здесь не делают этого и, очевидно, зависят от условий гонки.
if (file exists) { open file }
почти всегда неверен во всех языках программирования! Для .NET решение заключается в использованииFile.Open(path, FileMode.Append, FileAccess.ReadWrite)
с соответствующими флагами.