Я создал код, который создает текстовый файл с начальным текстом, однако, когда я пытаюсь снова вызвать метод с новым сообщением, он не добавляет его в текстовый файл. Ниже мой код:
string example = "test";
WriteToLgo(example);
public static void WriteToLog(String inputtext)
{
string location= @"C:\Users\";
string NameOfFile = "test.txt";
string fileName= String.Format("{0:yyyy-MM-dd}__{1}", DateTime.Now, NameOfFile);
string path= Path.Combine(location, fileName);
using (StreamWriter sr= File.CreateText(path))
{
sr.WriteLine(inputtext);
}
}
Если я попытаюсь вызвать метод во второй раз, новое сообщение не будет добавлено. Любая помощь будет оценена по достоинству.





Вы не должны использовать File.CreateText, вместо этого используйте эту перегрузку StreamWriter:
//using append = true
using (StreamWriter sr = new StreamWriter(path, true))
{
sr.WriteLine(inputtext);
}
См. MSDN
@BretLipscomb: документ не так говорит: Initializes a new instance of the StreamWriter class for the specified file by using the default encoding and buffer size. If the file exists, it can be either overwritten or appended to. If the file does not exist, this constructor creates a new file.
Хм, ага. Ты прав. Думаю, они изменили это в какой-то момент, или я думаю о другой реализации. Спасибо.
@BretLipscomb: Я знаю это чувство ;-)
File.CreateText каждый раз создает только новый файл, перезаписывая что-либо в нем. Не добавляется к существующим файлам.
Вы должны использовать либо File.AppendText (...), чтобы открыть существующий файл для добавления содержимого, либо использовать базовый класс StreamWriter, чтобы открыть его с параметрами добавления.
Что-то вроде:
using (StreamWriter sr = File.AppendText(path))
{
sr.WriteLine(inputtext);
}
Если вы используете базовый класс StreamWriter вместо File.AppendText, вы можете использовать его как StreamWriter sr = new StreamWriter (path, true); ОДНАКО, вы должны проверить, существует ли файл, прежде чем открывать его для добавления. Вероятно, порекомендуйте File.AppendText в вашем случае.
Почему вы в этом сомневаетесь ??
Правда, new надо удалить. Я виноват в том, что следил за ним. @Bret должен удалить это.
Только что обновил, все правильно. "новый" в этом случае не требуется. Контроль с моей стороны. Вот что я получаю за то, что не использую intellisense.
Будьте осторожны с этим подходом, потому что вам нужно убедиться, что файл существует, прежде чем открывать его таким образом для добавления. Если файл не существует, будет исключение. Вместо этого вы можете использовать File.AppendText (путь), и он будет добавлять или создавать.