Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何确定字符串是本地文件夹字符串还是网络字符串?_C#_Unc - Fatal编程技术网

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

C# 如何确定字符串是本地文件夹字符串还是网络字符串?,c#,unc,C#,Unc,在c#中,除了正则表达式之外,如何确定字符串是本地文件夹字符串还是网络字符串 例如: 我有一个字符串,可以是“c:\a”或“\\foldera\folderb”查看此答案以获取文件路径的DriveInfo对象 使用此中的DriveType确定它是否为网络路径 新Uri(mypath).IsUnc我认为这个问题的完整答案是包括DriveInfo.DriveType属性的使用 public static bool IsNetworkPath(string path) { if (!path

在c#中,除了正则表达式之外,如何确定字符串是本地文件夹字符串还是网络字符串

例如:


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

查看此答案以获取文件路径的DriveInfo对象

使用此中的DriveType确定它是否为网络路径


新Uri(mypath).IsUnc
我认为这个问题的完整答案是包括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属性确定它是否为网络驱动器。

检查路径是否指向本地驱动器或网络驱动器的另一种方法:

var host = new Uri(@"\\foldera\folderb").Host; //returns "foldera"
if(!string.IsNullOrEmpty(host))
{
   //Network drive
}

即使UNC路径(以“\\”开头)也可以指向您的本地计算机。请看,为时已晚,但这是一个完美的答案[link],希望这是某个[1]:可能存在的副本,也有一个用于确定对立面的IsFile注意:此解决方案不知道网络驱动程序这对映射的网络驱动程序不起作用。它仍然返回一个空主机,
DriveInfo
无法使用netowrk路径,如
\\foldera\folderb
引发“ArgumentException”