2012-08-13 13 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