Создайте файл .txt, если он не существует, и если он добавляет новую строку - PullRequest
142 голосов
/ 28 марта 2012

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

Ответы [ 12 ]

150 голосов
/ 28 марта 2012

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

else if (File.Exists(path))
{
    using(var tw = new StreamWriter(path, true))
    {
        tw.WriteLine("The next line!");
    }
}
55 голосов
/ 28 марта 2012
string path = @"E:\AppServ\Example.txt";
File.AppendAllLines(path, new [] { "The very first line!" });

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

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

34 голосов
/ 11 сентября 2013
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!");
   }
}
17 голосов
/ 17 июня 2015

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

TextWriter tw = new StreamWriter(path, true);
tw.WriteLine("The next line!");
tw.Close(); 
7 голосов
/ 31 января 2018

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

File.AppendAllText("C:\\log.txt", "hello world\n");
5 голосов
/ 28 марта 2012

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

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

4 голосов
/ 28 марта 2012
 else if (File.Exists(path)) 
{ 
  using (StreamWriter w = File.AppendText(path))
        {
            w.WriteLine("The next line!"); 
            w.Close();
        }
 } 
3 голосов
/ 28 марта 2012

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

TextWriter t = new StreamWriter(path, true);
2 голосов
/ 28 марта 2012

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

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

1 голос
/ 06 октября 2018

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

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!");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...