When testing for a single specific attribute, you need to use bitwise arithmetic. For example,consider the following faulty code:
if (myFile.Attributes == FileAttributes.ReadOnly)
...{ ... }
This test succeeds only if the read-only attribute is the only attribute for the current file. This israrely the case. If you want to successfully check whether the file is read-only, you need this codeinstead:

if ((myFile.Attributes & FileAttributes.ReadOnly) != 0)...{ ... }
When setting an attribute, you must also use bitwise arithmetic. In this case, you need to ensure
that you don’t inadvertently wipe out the other attributes that are already set.
// This sets the read-only attribute (and keeps all others as is).
myFile.Attributes = myFile.Attributes | FileAttributes.ReadOnly;
// This removes the read-only attribute (and keeps all others as is).
myFile.Attributes = myFile.Attributes & ~FileAttributes.ReadOnly;
本文介绍了如何使用位运算来正确地检测和设置文件属性。通过对比错误和正确的代码示例,解释了为什么简单的等于操作无法准确判断特定属性(如只读属性),并展示了如何使用按位与操作来解决这一问题。
485

被折叠的 条评论
为什么被折叠?



