c# - 如何确定字符串是本地文件夹字符串还是网络字符串?

标签 c# unc

除了正则表达式,如何在c#中判断一个字符串是本地文件夹字符串还是网络字符串?

例如:

我有一个字符串,它可以是 "c:\a""\\foldera\folderb"

最佳答案

我认为这个问题的完整答案是包括 DriveInfo.DriveType 属性的用法。

public static bool IsNetworkPath(string path)
{
    if (!path.StartsWith(@"/") && !path.StartsWith(@"\"))
    {
        string rootPath = System.IO.Path.GetPathRoot(path); // get drive's letter
        System.IO.DriveInfo driveInfo = new System.IO.DriveInfo(rootPath); // get info about the drive
        return driveInfo.DriveType == DriveType.Network; // return true if a network drive
    }

    return true; // is a UNC path
}

测试路径以查看它是否以斜杠字符开头,如果是,则它是 UNC 路径。在这种情况下,您将不得不假设它是一条网络路径——实际上它可能不是指向另一台 PC 的路径,因为理论上它可能是指向您本地计算机的 UNC 路径,但这不是我想对于大多数人来说可能是这样,但是如果您想要一个更可靠的解决方案,您可以添加针对这种情况的检查。

如果路径不是以斜杠字符开头,则使用 DriveInfo.DriveType 属性来确定它是否是网络驱动器。

关于c# - 如何确定字符串是本地文件夹字符串还是网络字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4325712/

相关文章:

c# - 在 C# 中访问 UNC 路径的最佳方式

executable - 尝试让 Windows 服务在共享驱动器上运行可执行文件

c# - 我如何使用模拟来操作带有 UNC 的远程计算机上的文件/目录?

c# - 为什么在类属性中没有复杂逻辑被认为是最佳实践?

c# - 从控制台应用程序返回一个字符串

azure - 我可以通过 unc-path 从我的应用程序服务访问 azure-storage-file 吗?

c# - C# 中枚举网络连接路径

c# - Umbraco - 从 Action 处理程序刷新内容树中节点的父节点

c# - 以编程方式单击 WPF 按钮

c# - 如何对 IDictionary 的实现进行单元测试