Лучший способ сделать файл доступным для записи в c # - PullRequest
35 голосов
/ 29 июля 2009

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

Спасибо!

Ответы [ 3 ]

63 голосов
/ 29 июля 2009

Два способа:

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

36 голосов
/ 29 июля 2009

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

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

1 голос
/ 29 июля 2009

c #:

File.SetAttributes (filePath, FileAttributes.Normal);

File.SetAttributes (filePath, FileAttributes.ReadOnly);

...