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

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

Спасибо!

4 ответа

Решение

Два пути:

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#:

File.SetAttributes (filePath, FileAttributes.Normal);

File.SetAttributes (filePath, FileAttributes.ReadOnly);

Однострочный ответ (без изменения других атрибутов файла):

      new FileInfo(filename).IsReadOnly = true/false;
Другие вопросы по тегам