通过 VB.NET 获取所有“特殊文件夹”





5.00/5 (4投票s)
Ray Koopa 2016 年 3 月 21 日文章的 VB.NET 版本,获取 .NET 中的所有“特殊文件夹”
引言
在 2016 年 3 月 21 日,Ray Koopa 发表了一篇文章,获取 .NET 中的所有“特殊文件夹”,它允许 C# 用户以编程方式提取自 Vista 以来 Windows® 版本的 Microsoft“特殊文件夹”的完整路径名。 他的代码非常棒! 唯一的问题是它只用 C# 编写,而我们许多人生活在 Visual Basic 世界中并用它编程。 这不是我们的错! 这是一个管理指令,基于 Visual Basic 更容易让非程序员阅读和理解的观点。 (有时,我认为他们会对 COBOL 更满意。 仔细想想,不要告诉他们关于 COBOL.NET 或 NetCobol!)
背景
正如 Ray Koopa 在他的文章中指出的那样,从 Windows Vista 开始,微软在 我的文档 和 我的图片 等之外,添加了更多的“特殊文件夹”。 在 .NET 库中,Microsoft 没有提供易于使用的解决方案来允许程序员检索这些文件路径。 Ray 深入探讨了更多细节。
Ray Koopa 的解决方案
对于 C# 程序员,Ray 创建了一个名为 KnownFolders
的类,它具有以下 public
方法,每个方法都有多个签名
GetPath()
GetDefaultPath()
Initialize()
他还提供了一个简短的控制台例程来演示如何使用他的代码。
我的增强
我采用了他的代码,只是简单地将其重写为 Visual Basic 模块。 他的大部分原始评论都保留在代码中。 我确实添加了一个异常类,PathNotFoundException
,它派生自 ApplicationException
类,以提供结构化的错误处理。
我没有包含控制台例程,而是包含了一个 Visual Basic Windows 窗体来演示代码的使用。
为了获得最广泛的兼容性,我使用 Visual Studio 2005 构建了它。 据我所知,此模块可以添加到 VS 2005 之后的任何 Visual Studio 版本的任何 Visual Basic 中。
Using the Code
要使用该模块,请将 KnownFolders.vb 添加到您的 Visual Basic 项目。
要获取任何“特殊文件夹”的完整路径名,只需使用要检索的文件夹路径的枚举值调用 Knownfolders.GetPath
。 该调用要么返回相关文件夹的完整路径,要么抛出 PathNotFoundException
。 下面的代码循环遍历枚举并将一组四行添加到文本框中
- “特殊文件夹”枚举的数值和
string
值 - 当前路径或错误消息
- 默认路径或错误消息
- 一个空行
For Each myFolder In [Enum].GetValues(GetType(KnownFolders.KnownFolder))
Me.myText.Text &= CInt(myFolder).ToString & vbTab & myFolder.ToString & vbCrLf
Me.myText.Text &= vbTab & "Current Path:" & vbTab
Try
Me.myText.Text &= KnownFolders.GetPath(myFolder)
Catch ex As PathNotFoundException
Me.myText.Text &= "**** " & ex.Message
End Try
Me.myText.Text &= vbCrLf
Me.myText.Text &= vbTab & "Default Path:" & vbTab
Try
Me.myText.Text &= KnownFolders.GetDefaultPath(myFolder)
Catch ex As Exception
Me.myText.Text &= "**** " & ex.Message
End Try
Me.myText.Text &= vbCrLf & vbCrLf
Next
您,用户,所要做的就是附加一个“\
”,然后是文件名。 就这么简单!
关注点
我注意到许多 Code Project 库的作者没有定义他们自己的 ApplicationExceptions
。 他们依靠生成 MessageBox
或从他们的代码中触发 UnhandledException
处理程序。 定义您自己的异常很容易。
首先,定义一个异常类
Public Class PathNotFoundException
Inherits ApplicationException
Public Sub New(ByVal message As String
MyBase.New(message)
End Sub
End Class
然后,要使用该异常,只需按如下所示抛出它
Throw New PathNotFoundException( _
"Unable to retrieve the known folder path.")
历史
日期以 ISO 格式显示。
- 2016-04-07:我的原始版本
- 2016-03-21:Ray Koopa 在 CodeProject 上发布了 获取 .NET 中的所有“特殊文件夹”