Создайте .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. Я абсолютно не знаком с С#.

Ответ 2

string path = @"E:\AppServ\Example.txt";
File.AppendAllLines(path, new [] { "The very first line!" });

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

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

Ответ 3

string [email protected]"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!");
   }
}

Ответ 4

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

TextWriter tw = new StreamWriter(path, true);
tw.WriteLine("The next line!");
tw.Close(); 

Ответ 5

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

File.AppendAllText("C:\\log.txt", "hello world\n");

Ответ 7

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

TextWriter t = new StreamWriter(path, true);

Ответ 8

 else if (File.Exists(path)) 
{ 
  using (StreamWriter w = File.AppendText(path))
        {
            w.WriteLine("The next line!"); 
            w.Close();
        }
 } 

Ответ 10

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

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

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

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

AppendAllText

Ответ 11

using(var tw = new StreamWriter(path, File.Exists(path)))
{
    tw.WriteLine(message);
}

Ответ 12

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

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!");
    }
}

Ответ 13

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

var outputPath = @"E:\Example.txt";
var data = "Example Data";
File.AppendAllText(outputPath, data);