Comment supprimer un fichier en lecture seule?

J’ai un répertoire de courrier indésirable dans lequel je jette des téléchargements, des projets ponctuels, des brouillons de courriels et d’autres choses qui pourraient être utiles pendant quelques jours, mais qui n’ont pas besoin d’être sauvegardées pour toujours. Pour empêcher ce répertoire de s’emparer de ma machine, j’ai écrit un programme qui supprime tous les fichiers antérieurs à un nombre de jours spécifié et enregistre certaines statistiques sur le nombre de fichiers supprimés et leur taille uniquement pour le plaisir.

J’ai remarqué que quelques dossiers de projets vivaient bien plus longtemps que prévu, alors j’ai commencé à enquêter. En particulier, il semblait que les dossiers des projets dans lesquels j’avais utilisé SVN 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 supprimeraient pas un fichier en lecture seule.

Je ne me soucie pas de protéger les fichiers dans ce répertoire particulier; Si quelque chose d’important est là, c’est au mauvais endroit. Existe-t-il une classe .NET capable de supprimer les fichiers en lecture seule ou dois-je vérifier les atsortingbuts en lecture seule et les supprimer?

Selon la documentation de File.Delete , vous devrez supprimer l’ atsortingbut en lecture seule. Vous pouvez définir les atsortingbuts du fichier à l’aide de File.SetAtsortingbutes () .

 using System.IO; File.SetAtsortingbutes(filePath, FileAtsortingbutes.Normal); File.Delete(filePath); 

Selon la documentation de File.Delete , vous devrez supprimer l’ atsortingbut en lecture seule. Vous pouvez définir les atsortingbuts du fichier à l’aide de File.SetAtsortingbutes () .

L’équivalent si vous travaillez avec un object FileInfo est:

 file.IsReadOnly = false; file.Delete(); 

Pourquoi avez-vous besoin de vérifier? Effacez le drapeau en lecture seule et supprimez le fichier.

Hm, je pense que je préfère mettre

 >del /F * 

dans une tâche ordonnée. Peut-être enveloppé par un fichier de commandes pour enregistrer les statistiques.

Est-ce que je manque quelque chose?