"Fully-qualified path" 同义于 "absolute path"
对于文件或目录,是否只存在一个完全限定路径? - 就像规范化路径。
不,完全限定路径是任何不是相对路径的路径 (不是相对于隐含或指定上下文的当前目录)。多个不同的完全限定路径可能引用文件系统上的同一位置。请重新阅读:
在Java中,getPath()、getAbsolutePath()和getCanonicalPath()有什么区别?
但是将其中所有的"absolute"替换为"fully-qualified"。
要明确的是,有些人也会使用“相对路径”这个术语来指代带有“相对引用”(双点
..
)的路径。例如,一些人可能会将
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:\directory ..\directory\file.txt
我想知道那个页面的维护者用什么术语来区分..\file.txt
和C:\directory\..\directory\file.txt
,因为他称它们都是相对路径。 我同意双点是相对引用,但我不会将整个路径标记为相对路径,因为它在其中间有双点。 在他的术语中,似乎没有完全限定和规范之间的区别。(因此,你的问题的源头就在这里)。
我来自Unix和Java背景,因此可能会有所不同。 按照我的理解:
所以
- ..\file.txt - 相对路径
- C:\directory\..\directory\file.txt - 完全限定路径
- C:\directory\file.txt - 完全限定规范路径
MSDN页面的部分并没有明确说明C:\directory\..\directory\file.txt
是什么:如果认为C:\directory\..\directory\file.txt
是相对路径,无法与需要完全限定(但不一定是规范的)路径的Windows API一起使用,那么我建议该页面应该更清楚地表述这一点。
完全限定 vs 相对路径
如果文件名不以以下任何一种方式开头,则文件名相对于当前目录:
...
* 带有反斜杠的磁盘标识符,例如 "C:\" 或 "d:\"。
...
由于C:\directory\..\directory\file.txt
以带有反斜杠的磁盘标识符开头,因此该路径是完全限定路径,而不是相对路径。
一条路径如果包含"双点"(即一个组件中有两个连续的点),也被称为
相对路径。这个特殊的标识符
用于表示当前目录上一级的目录,也称为"父目录"。以下是该格式的示例:
- "..\tmp.txt" 指定了一个名为 tmp.txt 的文件,位于当前目录的父目录中。
- "....\tmp.txt" 指定了一个距当前目录两个目录级别的文件。
- "..\tempdir\tmp.txt" 指定了一个名为 tmp.txt 的文件,位于名为 tempdir 的目录中,该目录与当前目录同级。
我理解"contains double dots"这个短语意思是指前导的双点。示例仅展示了前导的双点。术语"current directory"通常表示进程的当前工作目录或驱动器的当前目录,这只在谈论前导双点时才有关系。然而,我可以看出这一部分可能会被解释成另一种方式。
无论如何,每个人的成长环境都不同,上下文至关重要,因此我想每个人在阅读文档或与不同背景的工程师讨论“完全限定”与“相对”的含义时都需要注意细微差别。