使用该FileSystemInfo.Attributes属性,并检查FileAttributes.ReadOnly:
var file = new FileInfo(path);
if ((file.Attributes & FileAttributes.ReadOnly) != 0)
{
    // Do whatever you want for a read-only file
}
请注意,这是不一样的,你是否能写入文件.如果它已经在使用,那么你可能无法写入它.即使它确实表明您在调用该属性时是否可以写入它,但这并不能告诉您是否可以在之后立即写入该文件.
基本上,如果要处理尝试写入可能失败的文件,则必须使用try/catch.我会IOException特别捕捉(或者更具体的例外),而不是捕获所有异常.