C# 有效区分文件路径和URI/URL

C# 有效区分文件路径和URI/URL,c#,url,path,C#,Url,Path,我有一个非常简单的文件传输应用程序(C#.NET),它允许用户将文件从本地文件系统的一个文件位置移动到另一个文件位置,或者将文件移动到SFTP位置 文件操作由一个简单的XML文件定义,该文件标识每个复制活动的源和目标,有效字符串可以是本地文件路径C:\SomePath\SomeFile.txt,也可以是SFTP URLsftp://somesite.com/somepath/somefile.txt 程序执行的实际操作因源和目标类型的不同而有很大差异。(类似于Windows资源管理器采用路径或U

我有一个非常简单的文件传输应用程序(C#.NET),它允许用户将文件从本地文件系统的一个文件位置移动到另一个文件位置,或者将文件移动到SFTP位置

文件操作由一个简单的XML文件定义,该文件标识每个复制活动的源和目标,有效字符串可以是本地文件路径
C:\SomePath\SomeFile.txt
,也可以是SFTP URL
sftp://somesite.com/somepath/somefile.txt

程序执行的实际操作因源和目标类型的不同而有很大差异。(类似于Windows资源管理器采用路径或URL的方式)

我的问题是,除了一般的字符串解析或reg-ex匹配外,是否有一种有效的或内置的方法将给定字符串分类为文件路径类型(驱动器号、冒号、反斜杠)和URL(协议、冒号、双斜杠等)

这个问题与类似,但我正在寻找一个.NET解决方案

if (new Uri(someString).IsFile)
如果字符串不是有效的路径或URI,则会出现异常


您还可以检查
Uri.Scheme
属性,该属性将返回
file
http
,等等。

Ah,不知道文件路径字符串可以传递给Uri类构造函数。此外,我们惊讶地发现,
Uri.Scheme
确实将sftp识别为一种协议,即使它没有列在上表中。请仔细阅读。“Scheme属性返回用于初始化Uri实例的方案。此属性不表示用于初始化Uri实例的方案已被识别。下表显示了Scheme属性返回的一些可能值的示例。”(强调添加)此外,请尝试
新建Uri(“abc:def”)
Ah,魔鬼在于细节。我想我和许多程序员一样,他们倾向于浏览文档中的表格、图片和示例代码。非常好的信息。