Ich muss den Inhalt einer bestimmten Datei bei jedem Start der Anwendungen löschen. Wie mache ich es?
Antworten:
Sie können die File.WriteAllText- Methode verwenden.
System.IO.File.WriteAllText(@"Path/foo.bar",string.Empty);
IO exceptions of file is in use
, daher empfehle ich Ihnen, sie manuell über den Dateistream zu verarbeiten
Dies habe ich getan, um den Inhalt der Datei zu löschen, ohne eine neue Datei zu erstellen, da ich nicht wollte, dass die Datei einen neuen Erstellungszeitpunkt anzeigt, selbst wenn die Anwendung gerade ihren Inhalt aktualisiert hat.
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.
Der einfachste Weg, dies zu tun, besteht darin, die Datei über Ihre Anwendung zu löschen und eine neue mit demselben Namen zu erstellen. Noch einfacher ist es, wenn Ihre Anwendung sie mit einer neuen Datei überschreibt.
Der einfachste Weg ist:
File.WriteAllText(path, string.Empty)
Ich empfehle jedoch die Verwendung, FileStream
da die erste Lösung werfen kannUnauthorizedAccessException
using(FileStream fs = File.Open(path,FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
lock(fs)
{
fs.SetLength(0);
}
}
Versuchen Sie es mit so etwas
Erstellt oder überschreibt eine Datei im angegebenen Pfad.
File.WriteAllText
, es scheint, als würde dies manchmal (?) Die Datei löschen, da die Hardlinks nicht aktualisiert werden.