Muszę wyczyścić zawartość określonego pliku za każdym razem, gdy uruchamiają się aplikacje. Jak mam to zrobić?
Odpowiedzi:
Możesz użyć metody File.WriteAllText .
System.IO.File.WriteAllText(@"Path/foo.bar",string.Empty);
IO exceptions of file is in use, że
Oto, co zrobiłem, aby wyczyścić zawartość pliku bez tworzenia nowego pliku, ponieważ nie chciałem, aby plik wyświetlał nowy czas tworzenia, nawet gdy aplikacja właśnie zaktualizowała swoją zawartość.
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.
Najprostszym sposobem na to jest prawdopodobnie usunięcie pliku za pośrednictwem aplikacji i utworzenie nowego o tej samej nazwie ... w jeszcze prostszy sposób wystarczy, że aplikacja nadpisze go nowym plikiem.
Najłatwiej jest:
File.WriteAllText(path, string.Empty)
Polecam jednak używać, FileStreamponieważ pierwsze rozwiązanie może rzucićUnauthorizedAccessException
using(FileStream fs = File.Open(path,FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
lock(fs)
{
fs.SetLength(0);
}
}
File.WriteAllTextwydaje się, że czasami (?) Usuwa to plik, ponieważ dowiązania twarde nie są aktualizowane.