Очистить текст из файла на c#
Пожалуйста помогите мне. Я пытаюсь сделать так, чтобы при клике на кнопку, очистился весь текст в файле.
Есть вопросы, задавайте мне.
Вот мой код:
private void button2_Click(object sender, EventArgs e)
{
string PathFile = @"D:\ds\database.txt";
List<string> lines = new List<string>();
File.Delete(PathFile);
string test = "hello";
File.Create(PathFile);
lines.Add(test);
File.WriteAllLines(PathFile, lines);
}
Но проблема заключается в том, что выдает мне ошибку. Помогите мне пожалуйста.
Ответы (1 шт):
Короткий ответ: попытка открыть уже открытый с монопольным доступом на чтение файл вызвала исключение.
Вы перемудрили. File.Create(PathFile); не просто создает файл, а открывает его. Обычно этот метод используют так.
using (FileStream fs = File.Create(path))
{
// здесь запись в файл
}
FileStream это IDisposable объект. Он держит файл открытым, пока вы его не задиспозите через using, Close() или Dispose(). Ошибка возникает, когда вы повторно обращаетесь к уже открытому файлу.
То есть проблему можно легко исправить вот так:
File.Create(PathFile).Close();
Но вы слишком много делаете лишних манипуляций.
Логику файла в вашем коде можно прочитать так:
- удалить файл
- открыть файл на перезапись с полной очисткой, создать, если не существует (здесь не хватает "закрыть")
- открыть файл на перезапись с полной очисткой, создать, если не существует, записать туда строки, закрыть файл
Зачем столько раз делать одно и то же?
Исправленный код
private void button2_Click(object sender, EventArgs e)
{
string PathFile = @"D:\ds\database.txt";
List<string> lines = new List<string>();
string test = "hello";
lines.Add(test);
File.WriteAllLines(PathFile, lines);
}
Содержимое файла будет просто перезаписано. Если файла нет, он будет создан автоматически.
Чтобы дозаписать строчки в конец не удаляя предыдущие, то надо использовать AppendAllLines.