zoukankan      html  css  js  c++  java
  • [原]System.IO.Path.Combine 路径合并

    使用 ILSpy 工具查看了 System.IO.Path 类中的 Combine 方法

    对它的功能有点不放心,原方法实现如下:

    // System.IO.Path
    /// <summary>Combines two path strings.</summary>
    /// <returns>A string containing the combined paths. If one of the specified paths is a zero-length string, this method returns the other path. If <paramref name="path2" /> contains an absolute path, this method returns <paramref name="path2" />.</returns>
    /// <param name="path1">The first path. </param>
    /// <param name="path2">The second path. </param>
    /// <exception cref="T:System.ArgumentException">
    ///   <paramref name="path1" /> or <paramref name="path2" /> contain one or more of the invalid characters defined in <see cref="M:System.IO.Path.GetInvalidPathChars" />. </exception>
    /// <exception cref="T:System.ArgumentNullException">
    ///   <paramref name="path1" /> or <paramref name="path2" /> is null. </exception>
    /// <filterpriority>1</filterpriority>
    public static string Combine(string path1, string path2)
    {
        if (path1 == null || path2 == null)
        {
            throw new ArgumentNullException((path1 == null) ? "path1" : "path2");
        }
        Path.CheckInvalidPathChars(path1);
        Path.CheckInvalidPathChars(path2);
        if (path2.Length == 0)
        {
            return path1;
        }
        if (path1.Length == 0)
        {
            return path2;
        }
        if (Path.IsPathRooted(path2))
        {
            return path2;
        }
        char c = path1[path1.Length - 1];
        // if (c != '\' && c != '/' && c != ':')
        if (c != Path.DirectorySeparatorChar && c != Path.AltDirectorySeparatorChar && c != Path.VolumeSeparatorChar)
        {
            // return path1 + '\' + path2;
            return path1 + Path.DirectorySeparatorChar + path2;
        }
        return path1 + path2;
    }

    方法中合并文件路径没问题 C:\\123.txt 但若是合并网址就会像这样 http://www.baidu.com\search 

    提外话: 这路径在 谷歌浏览器 和 IE10 都被正确识别为 http://www.baidu.com/search

    但还是觉得不够完美

  • 相关阅读:
    curl 的使用,参数大全
    ubuntu 编译安装php5扩展
    ubuntu 编译安装 php5.6.40
    ubuntu 编译安装 mysql5.7.32
    ubuntu 编译安装 apache2.4.46
    Android 逆向工具总结
    mariadb 和 mysql 之间的版本关系
    ubuntu 使用 apt 安装 apache2 php7 mysql8
    linux 系统安装 pip
    P2756 飞行员配对方案问题 提交 13.91k 通过 7.59k 时间限制 1.00s 内存限制 125.00MB 返回题目
  • 原文地址:https://www.cnblogs.com/z5337/p/4858906.html
Copyright © 2011-2022 走看看