web-dev-qa-db-fra.com

C # make fichier en lecture/écriture à partir de readonly

Si File.SetAttributes("C:\\myFile.txt", FileAttributes.ReadOnly); définit un fichier en lecture seule, comment puis-je le réinitialiser en lecture/écriture si besoin est?

Je soupçonne que ce serait FileAttributes.Normal mais cela modifiera-t-il les autres propriétés du fichier? Il n'y a pas de note très descriptive sur le site MSDN ...

Le fichier est normal et ne contient aucun autre attribut. Cet attribut n'est valide que s'il est utilisé seul.

Merci

19
Thomas Clayson

Pour supprimer uniquement l'attribut ReadOnly, procédez comme suit:

File.SetAttributes("C:\\myfile.txt", File.GetAttributes("C:\\myfile.txt") & ~FileAttributes.ReadOnly);

Cela supprimera l'attribut ReadOnly, mais conservera tout autre attribut existant dans le fichier.

40
matt

File.SetAttributes remplace TOUS les attributs du fichier.

La méthode appropriée pour définir et supprimer des attributs consiste tout d'abord à obtenir les attributs, à appliquer les modifications et à les définir.

par exemple.

var attr = File.GetAttributes(path);

// set read-only
attr = attr | FileAttributes.ReadOnly;
File.SetAttributes(path, attr);

// unset read-only
attr = attr & ~FileAttributes.ReadOnly;
File.SetAttributes(path, attr);
11
Joe

Je comprends que c'est très tard, mais je voulais partager ma solution en espérant que cela aide les autres. J'avais besoin de quelque chose de similaire et j'ai réussi à définir la propriété IsReadOnly sur FileInfo.

    private void UnsetReadOnlyAttribute(string filePathWithName)
    {
        FileInfo fileInfo = new FileInfo(filePathWithName);
        if (fileInfo.IsReadOnly)
        {
            fileInfo.IsReadOnly = false;
        }
    }
1
NoSaidTheCompiler