Мне нужно очищать содержимое определенного файла каждый раз при запуске приложения. Как это сделать?
80
Вы можете использовать метод File.WriteAllText .
System.IO.File.WriteAllText(@"Path/foo.bar",string.Empty);
File.WriteAllText
, кажется, что это иногда (?) Удаляет файл, поскольку жесткие ссылки не обновляются.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.
источник
Используйте
FileMode.Truncate
каждый раз при создании файла. Также поместитеFile.Create
внутрь файлtry
catch
.источник
Самый простой способ сделать это, возможно, удалить файл через ваше приложение и создать новый с тем же именем ... еще проще, просто заставьте ваше приложение перезаписать его новым файлом.
источник
Самый простой способ:
File.WriteAllText(path, string.Empty)
Однако я рекомендую вам использовать,
FileStream
потому что первое решение может броситьUnauthorizedAccessException
using(FileStream fs = File.Open(path,FileMode.OpenOrCreate, FileAccess.ReadWrite)) { lock(fs) { fs.SetLength(0); } }
источник
Попробуйте использовать что-нибудь вроде
File.Create
источник