【问题标题】:Efficiently Distinguish File Path from URI / URL有效区分文件路径与 URI / URL
【发布时间】:2012-08-09 05:58:34
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c# url path


    【解决方案1】:
    if (new Uri(someString).IsFile)
    

    如果字符串不是有效的路径或 URI,则会出现异常。

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

    【讨论】:

    • 啊,不知道文件路径字符串可以传递给 Uri 类构造函数。此外,惊讶地发现Uri.Scheme 确实将 sftp 识别为一种协议,即使它没有列在msdn documentation site 的表格中。
    • 仔细阅读。 "Scheme 属性返回用于初始化 Uri 实例的方案。此属性并不表示已识别用于初始化 Uri 实例的方案。下表显示了一些可能值的示例 由 Scheme 属性返回。" (强调)
    • 另外,试试new Uri("abc:def")
    • 啊,魔鬼在细节中。我想我就像许多程序员一样,他们倾向于浏览文档以获取表格、图片和示例代码。非常好的信息。
    猜你喜欢
    • 2013-01-28
    • 2015-03-06
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    相关资源
    最近更新 更多