一个很好的C#文件路径构建器库?

Igo*_*ejc 2 .net c# path

System.IO.Path在.NET中,使用它是非常笨拙的.在我的各种项目中,我遇到保持其要求使用重复的,繁琐,因而容易出错的代码片段相同的使用场景Path.Combine,Path.GetFileName,Path.GetDirectoryName,String.Format,等场景,如:

  • 更改给定文件名的扩展名
  • 更改给定文件名的目录路径
  • 使用字符串格式构建文件路径(如" Package{0}.zip")
  • 构建路径而不使用硬编码的目录分隔符\(因为它们不适用于Mono上的Linux)
  • 等等

在开始编写我自己的PathBuilder类或类似的东西之前:C#中有这样一个好的(并且经过验证的)开源实现吗?

更新:好的,只是说明我的意思:

        string zipFileName = Path.GetFileNameWithoutExtension(directoryName) + ".zip";
        zipFileName = Path.Combine(
            Path.GetDirectoryName(directoryName), 
            zipFileName);
Run Code Online (Sandbox Code Playgroud)

一个更好的流畅API可能如下所示:

Path2 directoryName = "something";
Path2 zipFileName = directoryName.Extension("zip");
Run Code Online (Sandbox Code Playgroud)

或者在构建路径时:

Path2 directoryName = "something";
Path2 directory2 = directoryName.Add("subdirectory")
    .Add("Temp").Add("myzip.zip");
Run Code Online (Sandbox Code Playgroud)

代替

string directory2 = Path.Combine(Path.Combine(Path.Combine(
     directoryName, "subdirectory"), "Temp"), "myzip.zip");
Run Code Online (Sandbox Code Playgroud)

我实际上在过去实现了类似的东西,但是在一个单独的项目中.我现在决定将它重新用作一个独立的C#类,在我的其他项目中在VisualStudio中添加"as link".这不是一个最干净的解决方案,但我想它会做到.如果您有兴趣,可以在这里查看代码.

Row*_*haw 8

您应首先查看Path框架v4中的增强功能.

例如,Path.Combine现在将接受多个路径片段,而不是必须嵌套它们.