2011-11-10 26 views
16

Si File.SetAttributes("C:\\myFile.txt", FileAttributes.ReadOnly); establece un archivo como de solo lectura, ¿cómo lo configuro para leer/escribir si es necesario?C# make file read/write from readonly

Sospecho que sería FileAttributes.Normal, pero ¿cambiará esto las demás propiedades del archivo? No hay una nota muy descriptiva en el sitio MSDN ...

El archivo es normal y no tiene otros atributos establecidos. Este atributo es válido solo si se usa solo.

Gracias

Respuesta

36

Para eliminar sólo el atributo ReadOnly, que harían algo como esto:

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

Esto eliminará el atributo ReadOnly, pero conservan cualquier otro atributo que ya existen en el archivo.

+0

Supongo '~' invierte el atributo? –

+2

Bastante - el operador '~' devuelve un complemento bit a bit de un valor dado. Semánticamente, lo que dice lo anterior es "Establezca los atributos del archivo' myfile.txt' en los atributos de 'miarchivo.txt' * excepto en el atributo ReadOnly *." – matt

+0

bien brillante! :) gracias –

8

File.SetAttributes reemplaza TODOS los atributos en el archivo.

La manera correcta de establecer y eliminar atributos es primero obtener los atributos, aplicar los cambios y establecerlos.

p. Ej.

var attr = File.GetAttributes(path); 

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

// unset read-only 
attr = attr & ~FileAttributes.ReadOnly; 
File.SetAttributes(attr); 
Cuestiones relacionadas