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



Я хотел бы создать .txt файл и запись в него, и если файл уже существует, я просто хочу добавить еще несколько строк:



string path = @"E:AppServExample.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#.

443   12  

12 ответов:

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

else if (File.Exists(path))
{
    using(var tw = new StreamWriter(path, true))
    {
        tw.WriteLine("The next line!");
    }
}
string path = @"E:\AppServ\Example.txt";
File.AppendAllLines(path, new [] { "The very first line!" });

см. Также файл.AppendAllText(). AppendAllLines будет добавить новую строку для каждой строки без того, чтобы положить его туда сами.

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

  • .AppendAllText
  • .AppendAllLines
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!");
   }
}

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

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

вы просто хотите открыть файл в режиме" добавить".

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

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

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

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

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

TextWriter t = new StreamWriter(path, true);

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

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

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

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

AppendAllText

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

File.AppendAllText("C:\log.txt", "hello world\n");
using(var tw = new StreamWriter(path, File.Exists(path)))
{
    tw.WriteLine(message);
}

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

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

Comments

    Ничего не найдено.