Мені потрібно очищати вміст певного файлу кожного разу, коли запускаються програми. Як це зробити?
Відповіді:
Ви можете використовувати метод 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
, здається, це іноді (?) Видаляє файл, оскільки жорсткі посилання не оновлюються.