Подтвердить что ты не робот

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

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

Спасибо!

4b9b3361

Ответ 1

Два способа:

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

Ответ 2

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

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

Ответ 3

С#:

File.SetAttributes(filePath, FileAttributes.Normal);

File.SetAttributes(filePath, FileAttributes.ReadOnly);