Ich habe ein Junk-Verzeichnis, in dem ich Downloads, einmalige Projekte, E-Mail-Entwürfe und andere verschiedene Dinge wegwerfe, die für einige Tage nützlich sein können, aber nicht für immer gespeichert werden müssen. Um zu verhindern, dass dieses Verzeichnis meinen Computer übernimmt, habe ich ein Programm geschrieben, das alle Dateien löscht, die älter als eine bestimmte Anzahl von Tagen sind, und nur zum Spaß einige Statistiken über die Anzahl der gelöschten Dateien und deren Größe protokolliert.
Ich bemerkte, dass einige Projektordner viel länger lebten als sie sollten, also begann ich zu untersuchen. Insbesondere schienen Ordner für Projekte, in denen ich SVN verwendet hatte, zu bleiben. Es stellt sich heraus, dass die schreibgeschützten Dateien in den .svn-Verzeichnissen nicht gelöscht werden. Ich habe gerade einen einfachen Test auf einer schreibgeschützten Datei und entdecken , dass System.IO.File.Delete
und System.IO.FileInfo.Delete
nicht eine schreibgeschützte Datei löschen.
Der Schutz von Dateien in diesem bestimmten Verzeichnis ist mir egal. Wenn etwas Wichtiges drin ist, ist es am falschen Ort. Gibt es eine .NET-Klasse, die schreibgeschützte Dateien löschen kann, oder muss ich nach schreibgeschützten Attributen suchen und diese entfernen?
Antworten:
Gemäß der Dokumentation von File.Delete müssen Sie das schreibgeschützte Attribut entfernen . Sie können die Attribute der Datei mit File.SetAttributes () festlegen .
using System.IO; File.SetAttributes(filePath, FileAttributes.Normal); File.Delete(filePath);
quelle
Gemäß der Dokumentation von File.Delete müssen Sie das schreibgeschützte Attribut entfernen . Sie können die Attribute der Datei mit File.SetAttributes () festlegen .
quelle
Das Äquivalent, wenn Sie zufällig mit einem
FileInfo
Objekt arbeiten, ist:file.IsReadOnly = false; file.Delete();
quelle
Warum müssen Sie überprüfen? Löschen Sie einfach das Nur-Lese-Flag und löschen Sie die Datei.
quelle
Hm, ich denke ich würde es lieber sagen
in eine geplante Aufgabe. Möglicherweise von einer Batchdatei zum Protokollieren von Statistiken umschlossen.
Vermisse ich etwas
quelle