Я пытаюсь установить флаг, который вызывает появление флажка Read Only
, когда вы right click \ Properties
в файле.
Спасибо!
Я пытаюсь установить флаг, который вызывает появление флажка Read Only
, когда вы right click \ Properties
в файле.
Спасибо!
Два пути:
System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);
fileInfo.IsReadOnly = true/false;
or
// Careful! This will clear other file flags e.g. `FileAttributes.Hidden`
File.SetAttributes(filePath, FileAttributes.ReadOnly/FileAttributes.Normal);
Свойство IsReadOnly
в FileInfo
, по сути, выполняет переключение битов, которое вам пришлось бы выполнять вручную во втором методе.
new FileInfo(filePath) { IsReadOnly = false };
, что очень удобно!
- person joneberg; 17.10.2012
Чтобы установить флаг только для чтения, фактически сделав файл недоступным для записи:
File.SetAttributes(filePath,
File.GetAttributes(filePath) | FileAttributes.ReadOnly);
Чтобы удалить флаг только для чтения, фактически сделав файл доступным для записи:
File.SetAttributes(filePath,
File.GetAttributes(filePath) & ~FileAttributes.ReadOnly);
Чтобы переключить флаг только для чтения, сделав его противоположным тому, что он есть сейчас:
File.SetAttributes(filePath,
File.GetAttributes(filePath) ^ FileAttributes.ReadOnly);
Это в основном битмаски в действии. Вы устанавливаете определенный бит, чтобы установить флаг только для чтения, вы очищаете его, чтобы удалить флаг.
Обратите внимание, что приведенный выше код не изменит никакие другие свойства файла. Другими словами, если файл был скрыт до того, как вы выполнили приведенный выше код, он останется скрытым и после этого. Если вы просто установите атрибуты файла на .Normal
или .ReadOnly
, вы можете потерять другие флаги в процессе.