Мне нужно очищать содержимое определенного файла каждый раз при запуске приложения. Как это сделать?
Ответы:
Вы можете использовать метод File.WriteAllText .
System.IO.File.WriteAllText(@"Path/foo.bar",string.Empty);
IO exceptions of file is in use
, поэтому я рекомендую вам обрабатывать его вручную через файловый поток
Это то, что я сделал, чтобы очистить содержимое файла без создания нового файла, поскольку я не хотел, чтобы файл отображал новое время создания, даже когда приложение только что обновило его содержимое.
FileStream fileStream = File.Open(<path>, FileMode.Open);
/*
* Set the length of filestream to 0 and flush it to the physical file.
*
* Flushing the stream is important because this ensures that
* the changes to the stream trickle down to the physical file.
*
*/
fileStream.SetLength(0);
fileStream.Close(); // This flushes the content, too.
Самый простой способ сделать это, возможно, удалить файл через ваше приложение и создать новый с тем же именем ... еще проще, просто заставьте ваше приложение перезаписать его новым файлом.
Самый простой способ:
File.WriteAllText(path, string.Empty)
Однако я рекомендую вам использовать, FileStream
потому что первое решение может броситьUnauthorizedAccessException
using(FileStream fs = File.Open(path,FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
lock(fs)
{
fs.SetLength(0);
}
}
Попробуйте использовать что-нибудь вроде
Создает или перезаписывает файл по указанному пути.
File.WriteAllText
, кажется, что это иногда (?) Удаляет файл, поскольку жесткие ссылки не обновляются.