Ответ 1
Используйте правильный конструктор:
else if (File.Exists(path))
{
using(var tw = new StreamWriter(path, true))
{
tw.WriteLine("The next line!");
}
}
Я хотел бы создать файл .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
. Я абсолютно не знаком с С#.
Используйте правильный конструктор:
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!" });
См. также File.AppendAllText(). AppendAllLines добавит новую строку в каждую строку, не помещая ее там.
Оба метода создадут файл, если он не существует, поэтому вам не нужно.
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!");
}
}
Вам действительно не нужно проверять, существует ли файл, поскольку StreamWriter сделает это за вас. Если вы откроете его в append-режиме, файл будет создан, если он не существует, тогда вы всегда будете добавлять и никогда не писать. Таким образом, ваша первоначальная проверка является избыточной.
TextWriter tw = new StreamWriter(path, true);
tw.WriteLine("The next line!");
tw.Close();
File.AppendAllText добавляет строку в файл. Он также создает текстовый файл, если файл не существует. Если вам не нужно читать контент, это очень эффективно. Вариант использования - регистрация.
File.AppendAllText("C:\\log.txt", "hello world\n");
Вы просто хотите открыть файл в режиме "append".
Когда вы запускаете StreamWriter, он переопределяет текст, который был там раньше. Вы можете использовать свойство append так:
TextWriter t = new StreamWriter(path, true);
else if (File.Exists(path))
{
using (StreamWriter w = File.AppendText(path))
{
w.WriteLine("The next line!");
w.Close();
}
}
Вы можете использовать FileStream. Это делает для вас всю работу.
Из документации Microsoft, вы можете создать файл, если он не существует, и добавить его в один вызов Метод File.AppendAllText(String, String)
.NET Framework (текущая версия) Другие версии
Открывает файл, добавляет указанную строку в файл и затем закрывает файл. Если файл не существует, этот метод создает файл, записывает указанную строку в файл, а затем закрывает файл. Пространство имен: System.IO Сборка: mscorlib (в mscorlib.dll)
Синтаксис С# С++ F # VB public static void AppendAllText ( строка, содержимое строки ) параметры дорожка Тип: System.String Файл для добавления указанной строки в. содержание Тип: System.String Строка для добавления в файл.
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!");
}
}
Вы можете просто использовать метод File.AppendAllText(), чтобы решить вашу проблему. Этот метод позаботится о создании файла, если он недоступен, об открытии и закрытии файла.
var outputPath = @"E:\Example.txt";
var data = "Example Data";
File.AppendAllText(outputPath, data);