.NET路径操作库

.NET路径操作库

.NET path manipulation library

有人知道任何好的库可以很好地抽象出路径操作问题吗?我希望能够使用任意分隔符(例如'/'或':')组合和解析路径,而无需重新设计轮子。

System.IO.Path不可重用是很可惜的。

谢谢


检查Patrick的库以处理路径操作链接文本

这是Codeplex项目


System.IO.Path.Combine对于许多不同类型的路径都适用:

http://msdn.microsoft.com/en-us/library/system.io.path.combine.aspx

System.IO.Path.Combine使用当前的平台标准分隔符来组合路径。这意味着在Windows上它使用" ",在unix / linux(单声道)上它使用" /"。您能否提供一些示例,说明您要尝试结合的路径以及在哪个平台上进行的操作?


恐怕您必须像我一样自己实现一个路径类。它具有以下优点:

  • 您可以从类型安全中受益
  • 您可以覆盖运算符/,从而使连接更容易
  • 您可以添加便捷成员函数,例如GetParentPath()和GetLeafPart()

我无法根据分隔符告诉您可能正在使用的环境,但是我之前从未见过像这样的库。

因此,使用反射镜和System.IO.Path作为基础,重新设计轮子并不难。

  • 创建此类的实例
  • 在CTor中提供分隔符
  • 如果需要,可以选择更改InvalidPathChars

这几乎是框架使用的代码,因此应该一样快,或者差异可以忽略不计。可能快于RegEx或可能不快于RegEx,但这可能值得一试。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
class ArbitraryPath
{
    private readonly char _directorySeparatorChar;
    private readonly char _altDirectorySeparatorChar;
    private readonly char _volumeSeparatorChar;

    public ArbitraryPath(char directorySeparatorChar, char altDirectorySeparatorChar, char volumeSeparatorChar)
    {
        _directorySeparatorChar = directorySeparatorChar;
        _altDirectorySeparatorChar = altDirectorySeparatorChar;
        _volumeSeparatorChar = volumeSeparatorChar;
    }

    public string Combine(string path1, string path2)
    {
        if ((path1 == null) || (path2 == null))
        {
            throw new ArgumentNullException((path1 == null) ?"path1" :"path2");
        }
        CheckInvalidPathChars(path1);
        CheckInvalidPathChars(path2);
        if (path2.Length == 0)
        {
            return path1;
        }
        if (path1.Length == 0)
        {
            return path2;
        }
        if (IsPathRooted(path2))
        {
            return path2;
        }

        char ch = path1[path1.Length - 1];
        if (ch != _directorySeparatorChar && ch != _altDirectorySeparatorChar && ch != _volumeSeparatorChar)
        {
            return (path1 + _directorySeparatorChar + path2);
        }
        return (path1 + path2);
    }

    public bool IsPathRooted(string path)
    {
        if (path != null)
        {
            CheckInvalidPathChars(path);
            int length = path.Length;
            if (length >= 1 && (path[0] == _directorySeparatorChar || path[0] == _altDirectorySeparatorChar) || length >= 2 && path[1] == _volumeSeparatorChar)
            {
                return true;
            }
        }
        return false;
    }

    internal static void CheckInvalidPathChars(string path)
    {
        for (int i = 0; i < path.Length; i++)
        {
            int num2 = path[i];
            if (num2 == 0x22 || num2 == 60 || num2 == 0x3e || num2 == 0x7c || num2 < 0x20)
            {
                throw new ArgumentException("Argument_InvalidPathChars");
            }
        }
    }

}

您正在描述正则表达式!将其用作您需要做的事情的基础。


推荐阅读

    linux常用的命令路径?

    linux常用的命令路径?,地址,工作,基础,网络,管理,系统,信息,命令,企业,服务,l

    linux命令操作vim?

    linux命令操作vim?,系统,地址,工作,命令,模式,标准,信息,入口,连续,时间,Linu

    linux一般检查命令?

    linux一般检查命令?,网络,系统,检测,情况,工作,信息,命令,进程,时间,设备,lin

    linux运维操作命令?

    linux运维操作命令?,系统,网络,基础,标准,工具,信息,工作,命令,软件,数据,lin

    linux命令行常见操作?

    linux命令行常见操作?,系统,工作,地址,管理,信息,命令,目录,一致,基础,标准,l

    检查硬件linux命令?

    检查硬件linux命令?,信息,系统,第一,数据,设备,检测,命令,情况,灵活,实时,如

    linux组合命令别名?

    linux组合命令别名?,系统,别名,地方,环境,工作,新增,命令,终端,文件,环境变

    linux清空操作命令?

    linux清空操作命令?,系统,数据,命令,名称,不了,文件夹,文件,环境,回收站,目

    linux改变命令的路径?

    linux改变命令的路径?,数字,第一,目录,工作,一致,名称,系统,命令,文件夹,代

    linux安装操作命令?

    linux安装操作命令?,系统,工作,地址,工具,服务,情况,信息,命令,最新,管理,lin

    linux中显示路径命令?

    linux中显示路径命令?,系统,地址,工作,信息,时间,命令,数据,网络,路径,名字,l

    linux保存路径命令行?

    linux保存路径命令行?,状态,地址,电脑,档案,系统,底部,软件,密码,命令,文件,l

    linux操作系mv命令?

    linux操作系mv命令?,名字,系统,软件,文件,命令,信息,地址,目录,文件夹,源文

    linux相对路径命令?

    linux相对路径命令?,工作,名字,路径,目录,管理,信息,系统,位置,名称,基础,lin

    linux操作命令大全图?

    linux操作命令大全图?,工作,地址,系统,信息,命令,目录,控制台,功能,操作,内

    检查路由命令linux?

    检查路由命令linux?,网络,地址,系统,信息,工具,电脑,时间,通信,服务,命令,lin

    linux多路径查看命令?

    linux多路径查看命令?,设备,软件,网络,工具,系统,情况,下降,公司,名称,大幅,

    linux操作命令论文?

    linux操作命令论文?,管理,系统,设计,网络,企业,基础,机电设备,技术,发展,机

    linux路径命令解释?

    linux路径命令解释?,系统,信息,设备,数据,工具,命令,文件,标准,发行,时间,lin

    linux相对路径和命令?

    linux相对路径和命令?,地址,工作,信息,数据,系统,命令,文件,目录,时间,路径,l