Java中有一个规范路径概念。
WinApi中有一条完全合格的路径。
我很清楚规范路径是什么,但我不理解完全合格路径的概念。
对于文件或目录,完全排序的路径只存在一件事吗? 类似的规范路径。
它们都是完全相同的概念吗?
编辑:
还有一件事,
符号链接或硬链接是否属于完全限定路径?
编辑
我问维护命名文件,路径和命名空间页面的人让我知道这一点。
他回答说。
这也是完全合格的路径吗?
C:目录 ..目录 file.txt的
Technically that is a relative path because it contains the double dot (..) and some APIs do not process those correctly (the docs will clearly state that it needs a fully qualified path).
The two are mutually exclusive.
他的意思是,在我的猜测中,如果我们将一个像这样的"C: directory .. directory file.txt"的参数放到函数所需的完全限定路径中,该函数永远不会重新解释路径然后失败。
如果是这样,完全限定的路径与规范路径完全相同。 不是吗
这完全是奇怪的。 我认为在Unix上..节点实际上是EXISTS。 因此,"stuff /../ otherstuff"是完全合格的,并且一个愚蠢地处理它的软件将完美地工作,因为..只是另一个目录。 如果它不是在windowsland那么它只是另一种奇怪的东西,非常适合手工制作更多的角柜。 (典型的MS方式)
"完全合格的道路"是"绝对路径"的同义词
"完全限定"和"绝对路径"意味着相同的事情 - 与隐含或指定的上下文无关的路径。
每条路径都是完全限定的路径,否则它是相对路径
文件系统上的每个位置都有许多可用于引用它的路径,包括许多完全限定的路径:
C: TEMP.TXT
C: Program Files .. temp.txt
C: Program Files Microsoft .. .. temp.txt
等等
从概念上讲,其中一条完全合格的路径是指定该资源的最简单,最直接的方式 - 这是您的规范路径。
For a file or directory, does fully-qulified path exist only one thing? -like canonical path.
Ok.
不,完全限定路径是任何不是相对路径的路径(不相对于隐含或指定上下文的当前目录)。多个但不同的完全限定路径可以引用文件系统上的相同位置。重读:
Java中的getPath(),getAbsolutePath()和getCanonicalPath()之间的区别是什么?
但在所谓的"绝对"的地方替换"完全合格"。
为了清楚起见,有些人还会使用术语"相对路径"来引用其中包含"相对引用"(双点..)的路径。例如,有些人可能会因为双点而将C:\Program Files\Microsoft\\..\temp.txt称为"相对路径",但我会将其称为带有相对引用的完全限定路径。希望从对话中可以清楚地看出,当他们说"相对路径"(相对于上下文或具有相对引用的路径的路径)时,它们的含义是什么。
Are both of them totally same concepts?
Ok.
不,如另一个SO问题所示,有很多方法可以指定一个位置的完全限定路径(绝对路径),但只有一个完全限定路径被认为是该位置的规范路径。
One more thing, Is a UNC path belong to fully-qualified path too?
Ok.
是的,UNC路径不是相对路径;他们是完全合格的道路。 - http://msdn.microsoft.com/en-us/library/aa365247(v=VS.85).aspx#fully_qualified_vs._relative_paths
Is a symbolic link or a hard link belong to Fully qualified path?
Ok.
它是一个独立的概念。路径(无论是相对路径还是完全合格路径)都会导致文件系统中的某个位置。该位置的实体可以是许多内容之一:普通文件,目录,符号链接,硬链接,设备,命名管道等。符号链接或硬链接具有导致您在该位置实际查找的数据。
比喻时间
您可以根据指向某人家的方向来考虑路径和链接:
相对路径是您当前位置的路线
一条完全合格的道路是来自市政厅的方向,无论您身在何处
在我们奇怪的小镇Unixville,每个人都同意并理解,"完全合格的方向"总是从市政厅开始,奇怪的是,每个人都称之为"/"。
下一个城镇(Windowsville)有多个市政厅(每个城镇一个),称为C:\,D:\,E:\等。
不同的人可能会给你不同的方向(路径)去同一个房子,即使他们都从同一个起点(市政厅)开始 - 一些方向将比其他方向更直接。
规范的道路是完全合格的方向,是从市政厅到所需房屋的最简单,最直接的方式
符号链接就像一个空的批次,带有一个注释,指示转发地址
引导你到这里的方向类型(无论是相对方向,完全合格的方向,甚至是规范的完全合格的方向)与它是否通向房屋或任何空转地点无关
有一个奇怪的情况,你方向的一条街道实际上是一个象征性的链接(一个绕行?一个门户?) - 如果我们仔细观察它,这里的类比会分崩离析,所以让我们忽略它:-)
硬链接是可从两个或多个不同地址访问的房屋。
想想榆树街和主街拐角处的房子。邮局错误地给了它两个地址:10 Elm Str和20 Main Str。无论你去哪个地址,你最终都会在同一所房子里。
在我们这个奇怪的小镇,这些硬链接的房子可以有多个地址,地址不必彼此靠近。
无论你去哪个地址,它都是同一栋房子。它不是副本,它不是转发地址。只是神奇地说,一旦你进去,你最终会在同一所房子里,不管你曾经去过哪个地址。
引导你进入房子的方向(无论使用哪个地址,或方向是相对方向,完全合格的方向,甚至是规范的完全合格的方向)都与那个地址的房子是否很难有关 - 连接房子与否
附录
编辑
我问维护命名文件,路径和命名空间页面的人让我知道这一点。
他回答说。
这也是完全合格的路径吗?
C:目录.. 目录 file.txt的
BLOCKQUOTE>
我想知道该页面的维护者用什么术语来区分..\file.txt和C:\directory\..\directory\file.txt,因为他将它们称为相对路径。我同意双点是相对参考,但我不会将整个路径标记为相对路径,因为它在中间有双点。在他的术语中,完全合格和规范之间似乎没有区别。 (其中,我认为,这是你问题的根源)。
我来自Unix和Java背景,所以也许这会带来不同。据我所知:
相对/部分限定 - 如果没有相关的上下文提供信息,则无法确定位置,例如当前工作目录,当前驱动器,驱动器的当前目录,shell PATH设置,Java CLASSPATH设置或引用URL。
绝对/完全限定 - 位置独立于关联的上下文,即无论当前工作目录,当前驱动器,驱动器的当前目录,shell PATH设置,Java CLASSPATH设置或引用,位置都是相同的URL。
规范 - 最简单的完全合格,即没有双点
所以
.. file.txt - 亲戚
C: directory .. directory file.txt - 完全限定
C: directory file.txt - 完全限定和规范
MSDN页面的那一部分在C:\directory\..\directory\file.txt上不明确:如果C:\directory\..\directory\file.txt被认为是相对的,并且不能用于Windows API,它们说它们需要一个完全合格(但不一定是规范的?)路径,我会建议页面需要更清楚。
Fully-qualfied vs Relative
Ok.
A file name is relative to the current directory if it does not begin with one of the following:
Ok.
...
* A disk designator with a backslash, for example"C:\" or"d:\".
...
Ok.
由于C:\directory\..\directory\file.txt以带有黑名单的磁盘指示符开头,因此该路径是完全限定的,而不是相对的。
如果路径包含"双点",则该路径也称为相对路径;也就是说,路径的一个组成部分中有两个周期。此特殊说明符用于表示当前目录上方的目录,也称为"父目录"。此格式的示例如下:
".. tmp.txt"指定位于当前目录的父级中的名为tmp.txt的文件。
".... tmp.txt"指定一个文件,它是当前目录上方的两个目录。
".. tempdir tmp.txt"指定名为tmp.txt的文件,该文件位于名为tempdir的目录中,该目录是当前目录的对等目录。
BLOCKQUOTE>
我解释这个短语包含双点意味着领先的双点。 示例仅显示前导双点。 术语"当前目录"通常表示进程的当前工作目录或驱动器的当前目录,仅在讨论前导双点时才有意义。 但是,我可以看到如何以另一种方式解释该部分。
无论如何,每个人的成长都不同,背景也是王道,所以我想每个人在阅读文档或与不同背景的工程师讨论"完全合格"与"相对"的含义时,需要注意细微差别。
好。
您开车穿过街道中间的门户网站,最后到达符号链接的目的地;)
我建议页面需要更清楚。 是的,我也一样!
+1为附录。
+1,很好的彻底解释。
恕我直言,完全限定路径只允许您以明确的方式查找资源(独立于当前工作目录,PATH环境等),但两条不同的路径可以识别相同的资源。
我不知道windows方式知道两个路径是否指向同一个文件。
它没有。 利用这个是将相同的dll多次映射到内存中的一种方法。