Melhor maneira de fazer uma gravável arquivo em c #
-
05-07-2019 - |
Pergunta
Eu estou tentando bandeira conjunto que faz com que a caixa de seleção Read Only
a aparecer quando você right click \ Properties
em um arquivo.
Obrigado!
Solução
Duas maneiras:
System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);
fileInfo.IsReadOnly = true/false;
ou
// Careful! This will clear other file flags e.g. FileAttributes.Hidden
File.SetAttributes(filePath, FileAttributes.ReadOnly/FileAttributes.Normal);
A propriedade IsReadOnly em FileInfo essencialmente faz o que você teria que fazer manualmente no segundo método.-Lançando pouco
Outras dicas
Para set o sinalizador só de leitura, com efeito fazendo com que o arquivo não-gravável:
File.SetAttributes(filePath,
File.GetAttributes(filePath) | FileAttributes.ReadOnly);
Para Remover o sinalizador só de leitura, com efeito tornando o gravável arquivo:
File.SetAttributes(filePath,
File.GetAttributes(filePath) & ~FileAttributes.ReadOnly);
Para alternância o sinalizador só de leitura, tornando-se o oposto de tudo o que é agora:
File.SetAttributes(filePath,
File.GetAttributes(filePath) ^ FileAttributes.ReadOnly);
Este é basicamente bitmasks em vigor. Você define um pouco específica para definir o sinalizador só de leitura, você limpá-la para remover a bandeira.
Note que o código acima não vai alterar outras propriedades do arquivo. Em outras palavras, se o arquivo foi escondido antes de executado o código acima, ele vai ficar escondido depois também. Se você simplesmente definir os atributos de arquivo para .Normal
ou .ReadOnly
você pode acabar perdendo outras bandeiras no processo.
c #:
File.SetAttributes (filePath, FileAttributes.Normal);
File.SetAttributes (filePath, FileAttributes.ReadOnly);