Я хотел бы создать файл .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 #.
c#
text-files
Berker Yüceer
источник
источник
if (file exists) { open file }
почти всегда неверен во всех языках программирования! Для .NET решение заключается в использованииFile.Open(path, FileMode.Append, FileAccess.ReadWrite)
с соответствующими флагами.File.Open
внутренне делегирует функцию WinAPI (см. Следующий комментарий), надеясь предотвратить состояние гонки. Большинство решений здесь не делают этого и, очевидно, зависят от условий гонки.Ответы:
Используйте правильный конструктор :
источник
File.Open(path, FileMode.Append, FileAccess.ReadWrite)
и проверить размер файла через этот возвращаемый поток.Смотрите также File.AppendAllText (). AppendAllLines добавит новую строку в каждую строку без необходимости помещать ее туда самостоятельно.
Оба метода создадут файл, если он не существует, поэтому вам не нужно.
источник
источник
Close()
изusing
заявления, так как все ресурсы будут закрыты перед удалением автоматически.На самом деле вам не нужно проверять, существует ли файл, так как StreamWriter сделает это за вас. Если вы откроете его в режиме добавления, файл будет создан, если он не существует, тогда вы всегда будете добавлять и никогда не перезаписывать. Таким образом, ваша первоначальная проверка избыточна.
источник
File.AppendAllText добавляет строку в файл. Он также создает текстовый файл, если файл не существует. Если вам не нужно читать контент, это очень эффективно. Вариант использования - регистрация.
источник
Вы просто хотите открыть файл в режиме «добавления».
http://msdn.microsoft.com/en-us/library/3zc0w663.aspx
источник
Когда вы запускаете StreamWriter, он переопределяет текст, который был там раньше. Вы можете использовать свойство append следующим образом:
источник
источник
File.Open(path, FileMode.Append, FileAccess.ReadWrite)
и проверить размер файла через этот возвращаемый поток.Вы можете использовать FileStream. Это делает всю работу за вас.
http://www.csharp-examples.net/filestream-open-file/
источник
Попробуй это.
источник
File.AppendText(path)
, а с ним проверять не надоFile.Exists(path)
. ИIf (not A) Else If (A)
это странно, если / иначе. По сути, в этом вопросе нет ничего хорошего, нет объяснительного кода, который является избыточной версией другого ответа.File.Open(path, FileMode.Append, FileAccess.ReadWrite)
и проверить размер файла через этот возвращаемый поток.Вы можете просто использовать метод File.AppendAllText (), чтобы решить вашу проблему. Этот метод позаботится о создании файла, если он недоступен, об открытии и закрытии файла.
источник
Из документации Microsoft вы можете создать файл, если он не существует, и добавить его в один вызов File.AppendAllText Method (String, String)
.NET Framework (текущая версия) Другие версии
Открывает файл, добавляет указанную строку в файл, а затем закрывает файл. Если файл не существует, этот метод создает файл, записывает указанную строку в файл, а затем закрывает файл. Пространство имен: System.IO Сборка: mscorlib (в mscorlib.dll)
Синтаксис C # C ++ F # VB public static void AppendAllText (путь строки, содержимое строки) Параметры path Тип: System.String Файл, к которому добавляется указанная строка. Содержание Тип: System.String Строка, добавляемая в файл.
AppendAllText
источник
источник