2010-01-08 75 views
4

在.NET基类库中,有一个System.IO.Path类用于对表示文件系统路径的字符串执行常见操作。然而,我需要的是一个封装了路径的类,所以我得到了类型安全和路径操作的可能较短的表示法。我正在考虑一个.NET相当于C++ Boost's路径类。这样的课是否存在?是否有保存文件系统路径的类?

更新:我不一定在寻找一个可以容纳文件和目录路径的类。但是,由于文件系统路径可用于指向两者,因此很明显可以使用相同的类。

结论的DirectoryInfo的FileInfo来接近我要找的。但是,它们似乎只是用来表示文件或目录,而不是文件或目录路径。这使得很难做到路径操作,比如combining a directory path and a relative file path,所以我想我会写一个封装路径的类。

回答

1

没有这样的类作为.NET Framework的一部分。我建议你自己写,也许基于StringBuilder和Path类。

+0

DirectoryInfo不是这样吗? :-) – 2010-01-08 08:30:32

+0

它是否适用于不存在的路径?如果他想把自己限制在实际的目录中,那么我希望他会更新这个问题。 – 2010-01-08 08:50:19

+0

它有一个Exists属性和一个Create方法,所以是的,它适用于不存在的目录。 – 2010-01-08 08:56:31

9

您在寻找System.IO.DirectoryInfo的分类。

DirectoryInfo类来自摘要[FileSystemInfo]类,而且您还有描述文件的FileInfo类。

+0

确实,这似乎适用于目录路径。是否还有一个可以保存文件路径的类? – 2010-01-08 09:04:32

+0

我更新了我的答案。检查FileInfo类。 – 2010-01-08 09:21:19

2

根据您的具体问题,您可以使用Uri类,因为它也可以表示本地地址。

但是,正如Rune said(+1),你应该用DirectoryInfo

0

去,我觉得在.NET中的心态是不是一个文件路径绑定到一个协议。

例如,File类是静态使用的。 文件路径的标识作为字符串传递,然后在需要查找时执行静态方法File.exists(pathstring)。

我比较喜欢.NET中的思维模式,它具有可实例化的File类。因为一旦你有一个可实例化的File类,每个人都期望一个File对象被传递。

通常情况下,文件标识最好作为字符串传递,因为它经历了多个字符串变异以及检查和比较,其中大多数比较/变异是最好的,并且是有效地通过正则表达式完成的。由于必须提取字符串,并且如果进行了修改,必须重新实例化新的File对象,因此以File对象传递的文件标识会吸收cpu。

通常,在Java中,我发现我必须将File对象来回地来回转换,因为其他程序员或库提供者对File类有过度/强迫的爱情关系。