“完全限定路径”与“绝对路径”同义
对于文件或目录,完全限定的路径是否只存在一件事? - 类似规范路径。
不,完全限定路径是任何不是相对路径(不相对于隐含或指定上下文的当前目录)的路径。多个但不同的完全限定路径可以引用文件系统上的相同位置。重读:
What's the difference between getPath(), getAbsolutePath(), and getCanonicalPath() in Java?
但是在它说“绝对”的任何地方都替换为“完全合格”。
为了清楚起见,有些人还会使用术语“相对路径”来指代其中包含“相对引用”(双点 ..)的路径。例如,有些人可能会因为双点而将C:\Program Files\Microsoft\\..\temp.txt 称为“相对路径”,但我会称其为具有相对引用的完全限定路径。希望从对话中清楚他们所说的“相对路径”(相对于上下文的路径或其中包含相对引用的路径)是什么意思。
两者是完全一样的概念吗?
不,如另一个 SO 问题所示,有很多方法可以指定到某个位置的完全限定路径(绝对路径),但只有这些完全限定路径之一被认为是该位置的规范路径位置。
还有一点,UNC 路径是否也属于完全限定路径?
是的,UNC 路径不是相对路径;它们是完全合格的路径。 - http://msdn.microsoft.com/en-us/library/aa365247(v=VS.85).aspx#fully_qualified_vs._relative_paths
符号链接还是硬链接属于完全限定路径?
它是一个独立的概念。一个路径(不管它是相对的还是完全限定的)指向文件系统中的一个位置。该位置的实体可能是许多事物中的一种:普通文件、目录、符号链接、硬链接、设备、命名管道等。符号链接或硬链接具有导致您在该位置实际查找的数据。
类比时间
您可以根据到某人家的方向来考虑路径和链接:
-
相对路径是从您当前位置出发的路线
-
完全合格的路径是从市政厅出发的路线,无论您身在何处
- 在我们陌生的 Unixville 小镇,每个人都同意并含蓄地理解“完全合格的指示”总是从市政厅开始,奇怪的是,每个人都称之为“
/”的建筑物。
- 下一个城镇 (Windowsville) 有多个市政厅(城镇的每个部分一个),称为
C:\、D:\、E:\ 等。
- 不同的人可能会为您提供不同的方向(路径)来到达同一所房子,即使他们都从同一个起点(市政厅)开始 - 有些方向会比其他方向更直接。
-
规范路径是完全限定的方向,是从市政厅到所需房屋的最简单、最直接的方法
-
符号链接就像一个空地,上面有一个说明,指示到转发地址的方向
- 将您引至此处的方向类型(无论是相对方向、完全限定方向,甚至是规范的完全限定方向)与此处指向的是房屋还是任何具有前进方向的空地无关
- 有一个奇怪的例子,你所在方向的一条街道实际上是一个符号链接(绕道?一个门户?) - 如果我们仔细观察它,这个类比在这里就会分崩离析,所以让我们忽略它 :-)
-
硬链接是可以从两个或多个不同地址访问的房子。
- 想想榆树街和主街拐角处的房子。邮局错误地给了它两个地址:
10 Elm Str 和20 Main Str。无论你去哪个地址,你最终都会住在同一所房子里。
- 在我们陌生的小镇上,这些硬链接房屋可以有多个地址,而且地址不必彼此靠近。
- 无论您去哪个地址,都是同一所房子。它不是副本,也不是转发地址。神奇的是,一旦你进去,你最终会在同一所房子里,不管你过去是从哪个地址到达那里的。
- 引导您到房子的方向(无论使用哪个地址,或者这些方向是相对方向、完全限定方向,甚至是规范的完全限定方向)与该地址的房子是否无关是否是硬链接房子
附录
编辑
我请维护命名文件、路径和命名空间页面的人告诉我这一点。
他回复了我。
这也是完全合格的路径吗?
C:\目录..\目录\文件.txt
我想知道该页面的维护者会使用什么术语来区分 ..\file.txt 和 C:\directory\..\directory\file.txt,因为他将它们都称为相对路径。我同意双点是相对引用,但我不会将整个路径标记为相对,因为它的中间有双点。在他的术语中,完全合格和规范之间似乎没有区别。 (我想,这就是你问题的来源)。
我来自 Unix 和 Java 背景,所以也许这会有所不同。据我所知:
相对/部分限定 - 如果没有相关上下文提供信息,则无法确定位置,例如当前工作目录、当前驱动器、驱动器的当前目录、shell PATH 设置、Java CLASSPATH 设置或引用 URL。
absolute/fully-qualified - 位置独立于关联的上下文,即无论当前工作目录、当前驱动器、驱动器当前目录如何,位置都是相同的, shell PATH 设置、Java CLASSPATH 设置或引用 URL。
canonical - 最简单的完全限定,即没有双点
所以
- ..\file.txt - 相对
- C:\directory\..\directory\file.txt - 完全合格
- C:\directory\file.txt - 完全合格和规范
section of the MSDN page 在C:\directory\..\directory\file.txt 上并不清楚:如果C:\directory\..\directory\file.txt 被认为是相对的,并且不能与说他们需要完全合格(但不一定是规范?)路径的 Windows API 一起工作,我' d 建议该页面需要使其更清晰。
完全合格与相对
文件名相对于当前目录如果它不以下列之一开头 :
...
* 带有反斜杠的磁盘指示符,例如“C:\”或“d:\”。
...
由于C:\directory\..\directory\file.txt 以带有黑斜线的磁盘指示符开头,因此该路径是完全限定的,而不是相对的。
如果路径包含“双点”,则也称路径是相对的;也就是说,路径的一个组成部分中有两个周期。此特殊说明符用于表示当前目录之上的目录,也称为“父目录”。这种格式的例子如下:
- "..\tmp.txt" 指定一个名为 tmp.txt 的文件,该文件位于当前目录的父目录中。
- "....\tmp.txt" 指定一个比当前目录高两个目录的文件。
- "..\tempdir\tmp.txt" 指定一个名为 tmp.txt 的文件,该文件位于一个名为 tempdir 的目录中,该目录是当前目录的对等目录。
我将短语包含双点解释为表示前导双点。这些示例仅显示前导双点。术语“当前目录”通常是指进程的当前工作目录或驱动器的当前目录,仅在谈论前导双点时才有意义。但是,我可以看到如何以另一种方式解释该部分。
无论如何,每个人的成长都不一样,语境为王,所以我想每个人在阅读文档或与不同背景的工程师讨论“完全-合格的”与“相对的”