2012-08-13 36 views
1

我有一个非常简单的文件传输应用程序(C#.NET),它允许用户在本地文件系统上将文件从一个文件位置移动到另一个文件位置,或将文件移动到SFTP位置。从URI/URL有效区分文件路径

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

由程序执行的实际操作差异很大,具体取决于源和目标类型。 (类似于Windows资源管理器如何获取路径或URL)。

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

此问题与Distinguish a filename from an URL类似,但我正在寻找.NET解决方案。

回答

2
if (new Uri(someString).IsFile) 

如果字符串不是一个有效的路径或URI,你会得到一个异常。

您还可以检查Uri.Scheme属性,它会返回filehttp

+0

啊,不知道文件路径字符串可以传递给Uri类构造函数。另外,惊讶地发现'Uri.Scheme'确实将sftp识别为协议,即使它没有列在[msdn文档站点]的表格中(http://msdn.microsoft.com/en-us/library /system.uri.scheme.aspx)。 – nicholas 2012-08-13 00:54:48

+2

仔细阅读。 “Scheme属性返回用于初始化Uri实例的方案**该属性并不表示用于初始化Uri实例的方案被识别为** 下表显示了由Scheme所返回的_some可能值_的示例属性。” (强调加入) – SLaks 2012-08-13 14:09:00

+0

另外,试试'new Uri(“abc:def”)' – SLaks 2012-08-13 14:09:09