web-dev-qa-db-ja.com

ファイルをC#で書き込み可能にする最良の方法

ファイルをRead Onlyすると、right click \ Propertiesチェックボックスが表示されるフラグを設定しようとしています。

ありがとう!

35
will

二通り:

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);

FileInfoのIsReadOnlyプロパティは、基本的に、2番目の方法で手動で行う必要があるビットフリッピングを実行します。

64
Rex M

To set読み取り専用フラグ。事実上、ファイルは書き込み不可になります。

File.SetAttributes(filePath,
    File.GetAttributes(filePath) | FileAttributes.ReadOnly);

To remove読み取り専用フラグ。事実上、ファイルを書き込み可能にします。

File.SetAttributes(filePath,
    File.GetAttributes(filePath) & ~FileAttributes.ReadOnly);

To toggle読み取り専用フラグで、現在のフラグとは逆になります。

File.SetAttributes(filePath,
    File.GetAttributes(filePath) ^ FileAttributes.ReadOnly);

これは基本的に有効なビットマスクです。特定のビットを設定して読み取り専用フラグを設定し、それをクリアしてフラグを削除します。

上記のコードは、ファイルの他のプロパティを変更しないことに注意してください。つまり、上記のコードを実行する前にファイルが非表示になっていると、その後も非表示のままになります。ファイル属性を.Normalまたは.ReadOnlyに設定するだけでは、プロセスで他のフラグが失われる可能性があります。

37

c#:

File.SetAttributes(filePath、FileAttributes.Normal);

File.SetAttributes(filePath、FileAttributes.ReadOnly);

1
toddwick