2010-12-06 8 views
1

J'ai écrit un programme (C# .net 2.0) qui parcourt tous les fichiers ini d'un répertoire donné, et tente de remplacer certains modèles de chaîne si trouvés. Certains de ces fichiers .ini sont en lecture seule, et il y en a une grande quantité.Ecriture en fichiers en lecture seule

Des suggestions sur la meilleure façon de gérer cela? Il va être utilisé dans un environnement win2k, win2k3 32bit avec jusqu'à .net 2.0 installé.

+2

Avez-vous envisagé de retirer le bit de lecture seule pendant que vous modifiez les fichiers? – cdhowie

+2

Si les fichiers sont marqués en lecture seule par le système d'exploitation, vous ne pouvez pas écrire dessus sans modifier cet attribut. – jvanrhyn

+0

il semble que je pourrais peut-être utiliser la commande DOS "attr -r c: \ répertoire \ *. Ini", comment pourrais-je implémenter cela dans le code C#? – cc0

Répondre

7

Modifier l'attribut lecture seule (vous ne pouvez le faire si vous disposez des autorisations appropriées):

FileInfo myFile = new FileInfo(pathToFile); 
myFile.IsReadOnly = false; 

Le fichier est maintenant accessible en écriture - voir la documentation sur la propriété IsReadOnly.

+0

Parfait, juste ce que je cherchais. Je vous remercie! – cc0

4

Tout effacer l'attribut ReadOnly

File.SetAttributes(filePath, File.GetAttributes(filePath) & ~FileAttributes.ReadOnly); 

mais vérifiez d'abord si elle est là

bool isReadOnly = (File.GetAttributes(FilePath) & FileAttributes.ReadOnly) == FileAttributes.ReadOnly; 
+0

Merci, monsieur. C'est bon d'avoir vu cette méthode aussi. – cc0