J'ai un répertoire indésirable dans lequel je lance des téléchargements, des projets ponctuels, des brouillons d'e-mails et d'autres choses qui pourraient être utiles pendant quelques jours mais qui n'ont pas besoin d'être enregistrées pour toujours. Pour empêcher ce répertoire de prendre le contrôle de ma machine, j'ai écrit un programme qui supprimera tous les fichiers antérieurs à un nombre de jours spécifié et enregistre des statistiques sur le nombre de fichiers supprimés et leur taille juste pour le plaisir.
J'ai remarqué que quelques dossiers de projet vivaient beaucoup plus longtemps qu'ils ne le devraient, alors j'ai commencé à enquêter. En particulier, il semblait que les dossiers des projets dans lesquels j'avais utilisé SVN restaient. Il s'avère que les fichiers en lecture seule des répertoires .svn ne sont pas supprimés. Je viens de faire un test simple sur un fichier en lecture seule et j'ai découvert que System.IO.File.Delete
et System.IO.FileInfo.Delete
ne supprimera pas un fichier en lecture seule.
Je me fiche de la protection des fichiers dans ce répertoire particulier; s'il y a quelque chose d'important, c'est au mauvais endroit. Existe-t-il une classe .NET qui peut supprimer des fichiers en lecture seule, ou vais-je devoir vérifier les attributs en lecture seule et les supprimer?
Selon documentation de File.Delete, , vous devrez supprimer l'attribut en lecture seule. Vous pouvez définir les attributs du fichier à l'aide de File.SetAttributes () .
using System.IO;
File.SetAttributes(filePath, FileAttributes.Normal);
File.Delete(filePath);
Selon documentation de File.Delete, , vous devrez supprimer l'attribut en lecture seule. Vous pouvez définir les attributs du fichier à l'aide de File.SetAttributes () .
L'équivalent si vous travaillez avec un objet FileInfo
est:
file.IsReadOnly = false;
file.Delete();
Pourquoi faut-il vérifier? Effacez simplement de force l'indicateur de lecture seule et supprimez le fichier.
Hm, je pense que je préfère mettre
>del /F *
dans une tâche planifiée. Peut être enveloppé par un fichier de commandes pour les statistiques de journalisation.
Suis-je en train de manquer quelque chose?