2011-11-10 41 views
16

File.SetAttributes("C:\\myFile.txt", FileAttributes.ReadOnly);がファイルを読み取り専用に設定する場合、必要に応じて読み取り/書き込みに設定するにはどうすればよいですか?C#ファイルを読み取り専用で読み取り/書き込みする

これはFileAttributes.Normalと思われますが、ファイルのその他のプロパティは変更されますか? MSDNサイトには非常に説明的な注釈はありません。

ファイルは正常で、他の属性は設定されていません。この属性は、単独で使用する場合にのみ有効な です。

おかげ

答えて

36

だけReadOnly属性を削除するには、あなたはこのような何かをしたい:

File.SetAttributes("C:\\myfile.txt", File.GetAttributes("C:\\myfile.txt") & ~FileAttributes.ReadOnly); 

このReadOnly属性を削除しますが、すでに上に存在する他の属性を保存しますファイル。

+0

私は '〜'属性を逆にしていると思いますか? –

+2

かなり〜 - '〜'演算子は与えられた値のビット補数を返します。意味的には、上記の内容は、「ファイルmyfile.txtの属性を、myfile.txt' *の属性にReadOnly属性を除いて設定します。*」 – matt

+0

大変よかった! :) thanks –

8

File.SetAttributesはファイルのすべての属性を置き換えます。

属性を設定および削除する適切な方法は、最初に属性を取得し、変更を適用して設定することです。

var attr = File.GetAttributes(path); 

// set read-only 
attr = attr | FileAttributes.ReadOnly; 
File.SetAttributes(attr); 

// unset read-only 
attr = attr & ~FileAttributes.ReadOnly; 
File.SetAttributes(attr); 
関連する問題