La mejor manera de hacer un archivo escribible en c #
-
05-07-2019 - |
Pregunta
Estoy intentando establecer un indicador que hace que aparezca la casilla de verificación Solo lectura
cuando haga clic con el botón derecho en \ Propiedades
en un archivo.
¡Gracias!
Solución
Dos maneras:
System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);
fileInfo.IsReadOnly = true/false;
o
// Careful! This will clear other file flags e.g. FileAttributes.Hidden
File.SetAttributes(filePath, FileAttributes.ReadOnly/FileAttributes.Normal);
La propiedad IsReadOnly en FileInfo básicamente realiza el cambio de bits que tendría que hacer manualmente en el segundo método.
Otros consejos
Para establecer el indicador de solo lectura, de hecho, el archivo no se puede escribir:
File.SetAttributes(filePath,
File.GetAttributes(filePath) | FileAttributes.ReadOnly);
Para eliminar el indicador de solo lectura, que hace que el archivo se pueda escribir:
File.SetAttributes(filePath,
File.GetAttributes(filePath) & ~FileAttributes.ReadOnly);
Para alternar la bandera de solo lectura, haciendo que sea lo opuesto a lo que sea ahora:
File.SetAttributes(filePath,
File.GetAttributes(filePath) ^ FileAttributes.ReadOnly);
Esto es básicamente máscaras de bits en efecto. Establece un bit específico para establecer el indicador de solo lectura, lo borra para eliminar el indicador.
Tenga en cuenta que el código anterior no cambiará ninguna otra propiedad del archivo. En otras palabras, si el archivo estaba oculto antes de ejecutar el código anterior, también permanecerá oculto después. Si simplemente establece los atributos del archivo en .Normal
o .ReadOnly
, podría terminar perdiendo otras banderas en el proceso.
c #:
File.SetAttributes (filePath, FileAttributes.Normal);
File.SetAttributes (filePath, FileAttributes.ReadOnly);