File.SetAttributes("C:\\myFile.txt", FileAttributes.ReadOnly);
がファイルを読み取り専用に設定した場合、必要に応じてファイルを読み取り/書き込みに戻すにはどうすればよいですか?
FileAttributes.Normal
ただし、これによりファイルの他のプロパティが変更されますか? MSDNサイトにひどく説明的なメモはありません...
ファイルは正常であり、他の属性は設定されていません。この属性は、単独で使用した場合にのみ有効です。
ありがとう
ReadOnly
属性のみを削除するには、次のようにします。
File.SetAttributes("C:\\myfile.txt", File.GetAttributes("C:\\myfile.txt") & ~FileAttributes.ReadOnly);
これにより、ReadOnly
属性が削除されますが、ファイルに既に存在する他の属性は保持されます。
File.SetAttributesは、ファイルのすべての属性を置き換えます。
属性を設定および削除する適切な方法は、最初に属性を取得し、変更を適用して、設定することです。
例えば.
var attr = File.GetAttributes(path);
// set read-only
attr = attr | FileAttributes.ReadOnly;
File.SetAttributes(path, attr);
// unset read-only
attr = attr & ~FileAttributes.ReadOnly;
File.SetAttributes(path, attr);
私はこれが非常に遅いことを理解していますが、他の人に役立つことを期待して私の解決策を共有したいと思いました。私は同様のものが必要で、IsReadOnly
にFileInfo
プロパティを設定することで達成しました。
private void UnsetReadOnlyAttribute(string filePathWithName)
{
FileInfo fileInfo = new FileInfo(filePathWithName);
if (fileInfo.IsReadOnly)
{
fileInfo.IsReadOnly = false;
}
}