72 votes

Comment supprimer un fichier en lecture seule?

J'ai une ordure répertoire où je mets de téléchargements, des projets, des brouillons d'e-mail, et d'autres diverses choses qui pourraient être utiles pour quelques jours, mais n'ont pas besoin d'être sauvé pour toujours. Pour arrêter ce répertoire de prendre le contrôle de ma machine, j'ai écrit un programme qui va supprimer tous les fichiers vieux de plus d'un certain nombre de jours et les journaux des statistiques sur le nombre de fichiers supprimés et leur taille, juste pour le plaisir.

J'ai remarqué que quelques-uns des dossiers de projet ont été de façon vivante plus que ce qu'ils devraient, donc, j'ai commencé à enquêter. En particulier, il semble que les dossiers pour les projets dans lesquels j'avais utilisé SVN étaient rester dans les parages. Il s'avère que les fichiers en lecture seule dans la .svn répertoires ne sont pas supprimés. J'ai juste fait un test simple, un fichier en lecture seule et a découvert que l' System.IO.File.Delete et System.IO.FileInfo.Delete pas à supprimer un fichier en lecture seule.

Je n'ai pas le souci de protéger les fichiers dans ce répertoire particulier; si quelque chose d'important est là, il est dans le mauvais endroit. Est-il un .NET de classe, qui peuvent supprimer les fichiers en lecture seule, ou vais-je avoir à vérifier pour les attributs en lecture seule et les dépouiller?

156voto

Gulzar Nazim Points 35342

Ajout d'un exemple de code à la réponse de Tim:

 using System.IO;

File.SetAttributes(filePath, FileAttributes.Normal);
File.Delete(filePath);
 

47voto

Tim Stewart Points 2500

Selon la documentation de File.Delete , vous devrez enlever l'attribut en lecture seule. Vous pouvez définir les attributs du fichier à l'aide de File.SetAttributes () .

19voto

Neil Points 1859

L'équivalent si vous travaillez avec un objet FileInfo est:

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

2voto

Adam Liss Points 27815

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

1voto

mkoeller Points 3101

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 d'enregistrement.

Est-ce que je manque quelque chose?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X