Лучший способ сделать файл доступным для записи на c#

StackOverflow https://stackoverflow.com/questions/1202022

  •  05-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь установить флаг, который вызывает Read Only установите флажок, который будет отображаться, когда вы right click \ Properties в файле.

Спасибо!

Это было полезно?

Решение

Два способа:

System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);
fileInfo.IsReadOnly = true/false;

или

// Careful! This will clear other file flags e.g. FileAttributes.Hidden
File.SetAttributes(filePath, FileAttributes.ReadOnly/FileAttributes.Normal);

Свойство IsReadOnly в FileInfo по существу выполняет переключение битов, которое вам пришлось бы выполнять вручную во втором методе.

Другие советы

Для установить флаг "только для чтения", фактически делающий файл недоступным для записи:

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 в конечном итоге вы можете потерять другие флаги в этом процессе.

c# :

Файл.Набор атрибутов (путь к файлу, FileAttributes.Обычный);

Файл.Задайте атрибуты (путь к файлу, FileAttributes.Только для чтения);

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top