如何:在 Visual Basic 中确定目录是否为只读

更新:2007 年 11 月

My.Computer.FileSystem.GetDirectoryInfo 方法方法返回一个带有 Attributes 属性的 DirectoryInfo 对象,可以查询该对象以确定有关目录的信息,包括该目录是否为只读的。

说明:

  对话框中的可用选项以及显示的菜单命令的名称和位置可能会与“帮助”中的描述不同,具体取决于您的当前设置或版本。此帮助页是根据“常规开发设置”而编写的。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置

确定目录是否为只读的

  1. 使用 GetDirectoryInfo 方法返回指定目录的 DirectoryInfo 对象。此示例返回目录 TestDirectory 的 DirectoryInfo 对象。

    Dim reader As System.IO.DirectoryInfo
    reader = My.Computer.FileSystem.GetDirectoryInfo("C:\testDirectory")
    
  2. 查询对象的 Attributes 属性以确定它是否为只读的。

    If (reader.Attributes And System.IO.FileAttributes.ReadOnly) > 0 Then
        MsgBox("Directory is readonly!")
    End If
    

示例

下面的示例以完整的形式显示上面的代码段,确定目录 testDirectory 是否为只读的,并将结果报告在消息框中。

Dim reader As System.IO.DirectoryInfo
reader = My.Computer.FileSystem.GetDirectoryInfo("C:\testDirectory")
If (reader.Attributes And System.IO.FileAttributes.ReadOnly) > 0 Then
    MsgBox("File is readonly!")
End If

编译代码

如果该目录不存在,则直至 DirectoryInfo 对象上的属性首次被访问时才会引发异常。

可靠编程

以下情况可能会导致异常:

  • 路径由于以下原因之一而无效:它是零长度字符串;它仅包含空白;它包含无效字符;或者它是一个设备路径(以 \\.\ 开头)(ArgumentException)。

  • 路径无效,因为它是 Nothing (ArgumentNullException)。

  • 路径超过了系统定义的最大长度 (PathTooLongException)。

  • 路径中的文件名或目录名包含冒号 (:),或格式无效 (NotSupportedException)。

  • 该用户缺少查看该路径所必需的权限 (SecurityException)。

请参见

任务

如何:在 Visual Basic 中确定目录的属性

参考

My.Computer.FileSystem.GetDirectoryInfo 方法