К установить флаг только для чтения, что делает файл недоступным для записи:
File.SetAttributes(filePath,
File.GetAttributes(filePath) | FileAttributes.ReadOnly);
К удалить флаг только для чтения, что делает файл доступным для записи:
File.SetAttributes(filePath,
File.GetAttributes(filePath) & ~FileAttributes.ReadOnly);
To переключает флаг только для чтения, делая его противоположным тому, что он есть сейчас:
File.SetAttributes(filePath,
File.GetAttributes(filePath) ^ FileAttributes.ReadOnly);
Это в основном битовые маски в действии. Вы устанавливаете определенный бит для установки флага только для чтения, вы очищаете его, чтобы удалить флаг.
Обратите внимание, что приведенный выше код не изменит никаких других свойств файла. Другими словами, если файл был скрыт до того, как вы выполнили приведенный выше код, он также будет скрыт и после. Если вы просто установите атрибуты файла на .Normal
или .ReadOnly
, вы можете потерять другие флаги в процессе.