Создайте файл .txt, если он не существует, и если он действительно добавляет новую строку

Я хотел бы создать файл .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 #.

Комментарии к вопросу (6)
Решение

Используйте правильный конструктор:

else if (File.Exists(path))
{
    using(var tw = new StreamWriter(path, true))
    {
        tw.WriteLine("The next line!");
    }
}
Комментарии (5)
string path = @"E:\AppServ\Example.txt";
File.AppendAllLines(path, new [] { "The very first line!" });

Смотрите также File.AppendAllText (). AppendAllLines добавит новую строку в каждую строку, не помещая ее туда самостоятельно.

Оба метода создадут файл, если он не существует, поэтому вам не нужно.

Комментарии (2)
string path=@"E:\AppServ\Example.txt";

if(!File.Exists(path))
{
   File.Create(path).Dispose();

   using( TextWriter tw = new StreamWriter(path))
   {
      tw.WriteLine("The very first line!");
   }

}    
else if (File.Exists(path))
{
   using(TextWriter tw = new StreamWriter(path))
   {
      tw.WriteLine("The next line!");
   }
}
Комментарии (6)

Вам не нужно проверять наличие файла, так как StreamWriter сделает это за вас. Если вы откроете его в режиме добавления, файл будет создан, если его не существует, тогда вы всегда будете добавлять и никогда не переписывать. Таким образом, ваш первоначальный чек является избыточным.

TextWriter tw = new StreamWriter(path, true);
tw.WriteLine("The next line!");
tw.Close(); 
Комментарии (1)

File.AppendAllText добавляет строку в файл. Он также создает текстовый файл, если файл не существует. Если вам не нужно читать контент, это очень эффективно. Случай использования - регистрация.

File.AppendAllText("C:\\log.txt", "hello world\n");
Комментарии (0)

Вы просто хотите открыть файл в режиме «приложения».

http://msdn.microsoft.com/en-us/library/3zc0w663.aspx

Комментарии (1)

Когда вы запускаете StreamWriter, он переопределяет текст, который был там раньше. Вы можете использовать свойство append, как это:

TextWriter t = new StreamWriter(path, true);
Комментарии (0)
 else if (File.Exists(path)) 
{ 
  using (StreamWriter w = File.AppendText(path))
        {
            w.WriteLine("The next line!"); 
            w.Close();
        }
 } 
Комментарии (2)

Вы можете использовать FileStream. Это делает всю работу за вас.

http://www.csharp-examples.net/filestream-open-file/

Комментарии (0)

Вы можете просто использовать метод File.AppendAllText (), который решит вашу проблему. Этот метод позаботится о создании файла, если он недоступен, открывая и закрывая файл.

var outputPath = @ "E: \ Example.txt" ;
var data = "Пример данных" ;
File.AppendAllText (выходной путь, данные) ;
Комментарии (0)

Из документации Microsoft вы можете создать файл, если он не существует, и добавить его в один вызов File.AppendAllText Method (Строка, Строка)

.NET Framework (текущая версия) Другие версии

Открывает файл, добавляет указанную строку в файл, а затем закрывает файл. Если файл не существует, этот метод создает файл, записывает указанную строку в файл, а затем закрывает файл. Пространство имен: System.IO Сборка: mscorlib (в mscorlib.dll)

Синтаксис C # C ++ F # VB общедоступная статическая пустота AppendAllText ( путь струны содержание строки ) Параметры путь Тип: System.String Файл для добавления указанной строки. содержание Тип: System.String Строка для добавления в файл.

[AppendAllText][1]

[1]: https://msdn.microsoft.com/en-us/library/microsoft.synchronization.syncdirectionorder(v = sql.105) .aspx?cs-save-lang = 1 & cs-lang = csharp # code-snippet-1

Комментарии (0)
using(var tw = new StreamWriter(path, File.Exists(path)))
{
    tw.WriteLine(message);
}
Комментарии (1)

Попробуй это.

string path = @"E:\AppServ\Example.txt";
if (!File.Exists(path))
{
    using (var txtFile = File.AppendText(path))
    {
        txtFile.WriteLine("The very first line!");
    }
}
else if (File.Exists(path))
{     
    using (var txtFile = File.AppendText(path))
    {
        txtFile.WriteLine("The next line!");
    }
}
Комментарии (2)