当前位置: 移动技术网 > 科技>操作系统>windows > 绝对路径和相对路径

绝对路径和相对路径

2018年12月07日  | 移动技术网科技  | 我要评论

苹果商农网,大航海时代2,信誓旦旦造句

system.io 命名空间中很多类型的成员都包括 path 参数,让你可以指定指向某个文件系统资源的绝对路径或相对路径。 此路径随后会传递至 windows 文件系统 api。 本主题讨论可在 windows 系统上使用的文件路径格式。

传统 dos 路径

标准的 dos 路径可由以下三部分组成:

  • 卷号或驱动器号,后跟卷分隔符 (:)。
  • 目录名称。 用来分隔嵌套目录层次结构中的子目录。
  • 可选的文件名。 用来分隔文件路径和文件名。

如果以上三项都存在,则为绝对路径。 如未指定卷号或驱动器号,且目录名称的开头是,则路径属于当前驱动器根路径上的相对路径。 否则路径相对于当前目录。 下表显示了一些可能出现的目录和文件路径。

路径描述
c:\documents\newsletters\summer2018.pdf c: 盘根路径上的绝对文件路径。
\program files\custom utilities\stringfinder.exe 当前驱动器根路径上的绝对路径。
2018\january.xlsx 指向当前目录的子目录中的文件的相对路径。
..\publications\travelbrochure.pdf 指向当前目录的同级目录中的文件的相对路径。
c:\projects\apilibrary\apilibrary.sln 指向 c: 盘根路径中的文件的绝对路径。
c:projects\apilibrary\apilibrary.sln c: 盘当前目录上的相对路径。

 重要

请注意最后两个路径之间的差异。 两者都指定了可选的卷说明符(均为“c:”),但前者以所指定卷的根开头,而后者不是。 结果,前者表示 c: 盘根目录上的绝对路径,而后者表示 c: 盘当前目录上的相对路径。 应使用前者时使用了后者是涉及 windows 文件路径的 bug 的常见原因。 

unc 路径

通用命名约定 (unc) 路径,用于访问网络资源,具有以下格式:

  • 一个以 \\ 开头的服务器名或主机名。 服务器名称可以为 netbios 计算机名称或者 ip/fqdn 地址(支持 ipv4 和 ipv6)。
  • 共享名,使用 \ 将其与主机名分隔开。 服务器名和共享名共同组成了卷。
  • 目录名称。 用来分隔嵌套目录层次结构中的子目录。
  • 可选的文件名。 用来分隔文件路径和文件名。

以下是一些 unc 路径的示例:

路径描述
\\system07\c$\ system07 上 c: 盘的根目录。
\\server2\share\test\foo.txt \\server2\share 卷的测试目录中的 foo.txt 文件。

unc 路径必须始终是完全限定的。 它们可以包括相对目录段(. 和 ..),但是这些目录段必须是完全限定的路径的一部分。 只能通过将 unc 路径映射至驱动器号来使用相对路径。

dos 设备路径

windows 操作系统有一个指向所有资源(包括文件)的统一对象模型。 可从控制台窗口访问这些对象路径;并通过旧版 dos 和 unc 路径映射到的符号链接的特殊文件,将这些对象路径公开至 win32 层。 此特殊文件夹可通过 dos 设备路径语法(以下任一)进行访问:

\\.\c:\test\foo.txt
\\?\c:\test\foo.txt

 备注

从 net core 1.1 和 .net framework 4.6.2 开始,运行在 windows 上的 .net 实现支持 dos 设备路径语法。

dos 设备路径由以下部分组成:

  • 设备路径说明符(\\.\ 或 \\?\),它将路径标识为 dos 设备路径。

     备注

    .net core 的所有版本以及从 4.6.2 开始的 .net framework 版本都支持 \\?\

  • 指向“真正”设备对象(这里是 c:)的符号链接。

    设备路径说明符后的第一个 dos 设备路径段标识了卷或驱动器。 (例如,\\?\c:\ 和 \\.\bootpartition\。)

    unc 有个特定的链接,很自然地名为 unc。 例如:

    \\.\unc\server\share\test\foo.txt
    \\?\unc\server\share\test\foo.txt

    对于设备 unc,服务器/共享部分构成了卷。 例如,在 \\?\server1\e:\utilities\\filecomparer\ 中,服务器/共享部分是 server1\utilities。 使用相对目录段调用 path.getfullpath(string, string) 等方法时,这一点非常重要;决不可能越过卷。

dos 设备路径通过定义进行完全限定。 不允许使用相对目录段(. 和 ..)。 也不会包含当前目录。

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网