我没有得到抽象和术语: - (
例如,DirectoryInfo.FullName被定义为目录或文件的完整路径,但它是一个字符串! DirectoryInfo.Name,FileInfo.FullName,Path.GetDirectoyName等也是如此。
这意味着在.Net中没有文件系统对象的“深度”(或“肉” - 我的英语不太好)。类型系统没有任何保护。例如,我不能定义两个Path对象,并询问其中一个是否在另一个“上方” - 我必须操纵字符串。我无法区分标识目录的路径和标识文件的路径。我什么都做不了! - (只是操纵琴弦。
这是正确的(或者我只是遗漏了一些东西)。如果正确,还有其他选择吗?
答案 0 :(得分:3)
看看System.IO.Path。要确定您是否有文件,可以执行Path.GetFileName("C:\\test\\") == String.Empty
。或者,如果您确定该文件有扩展名,则可以使用Path.HasExtension
。
答案 1 :(得分:1)
您应该查看Path
班级和Uri
班级。
MSDN链接:
例如,对于Path
类,您只有方法来获取目录,只有文件域,甚至只有文件名而没有给定路径的扩展名。
使用Uri
类,您有一个属性可以告诉您它是绝对的Uri
(IsAbsoluteUri
)还是一个制作亲属的方法Uri
({{1 }})。查看Uri FAQ以获取更多信息。
从顶部到底部遍历路径的示例:
MakeRelativeUri
答案 2 :(得分:1)
我认为FS实体的类型安全对象本身是FileInfo
和DirectoryInfo
。
答案 3 :(得分:0)