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
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.
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);
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;
}
}