完全合格的路径.规范路径

Ben*_*min 19 java windows winapi path

Java中有一个规范路径概念.
WinApi中有一条完全合格的路径.

我很清楚规范路径是什么,但我不理解完全合格路径的概念.

对于文件或目录,完全排序的路径只存在一件事吗?类似的规范路径.

它们都是完全相同的概念吗?

编辑:还有
一件事,符号链接或硬链接是否属于完全限定路径?

编辑
我问维护命名文件,路径和命名空间页面的人让我知道这一点.
他回答说.

这也是完全合格的路径吗?
C:\目录\ .. \目录\ file.txt的

从技术上讲,这是一个相对路径,因为它包含双点(..),而某些API不能正确处理它们(文档将明确指出它需要一个完全限定的路径).
这两者是相互排斥的.

他的意思是,在我的猜测中,如果我们将一个像这样的"C:\ directory\..\directory\file.txt"的参数放到函数所需的完全限定路径中,该函数永远不会重新解释路径然后失败.

如果是这样,完全限定的路径与规范路径完全相同.不是吗

Ber*_*t F 42

"完全合格的道路""绝对路径"的同义词

  • "完全限定""绝对路径"意味着相同的事情 - 与隐含或指定的上下文无关的路径.
  • 每条路径都是完全限定的路径,否则它是相对路径
  • 文件系统上的每个位置都有许多可用于引用它的路径,包括许多完全限定的路径:

    • C:\ TEMP.TXT
    • C:\ Program Files\..\temp.txt
    • C:\ Program Files\Microsoft\..\..\temp.txt
    • 等等
  • 从概念上讲,其中一条完全合格的路径是指定该资源的最简单,最直接的方式 - 这是您的规范路径.

对于文件或目录,完全排序的路径只存在一件事吗?类似的规范路径.

不,完全限定路径是任何不是相对路径的路径(不相对于隐含或指定上下文的当前目录).多个但不同的完全限定路径可以引用文件系统上的相同位置.重读:

Java中的getPath(),getAbsolutePath()和getCanonicalPath()有什么区别?

但在所谓的"绝对"的地方替换"完全合格".

为了清楚起见,有些人还会使用术语"相对路径"来指代其中具有"相对参考"(双点..)的路径.例如,有些人可能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 Str20 Main Str.无论你去哪个地址,你最终都会在同一所房子里.
    • 在我们这个奇怪的小镇,这些硬链接的房子可以有多个地址,地址不必彼此靠近.
    • 无论你去哪个地址,它都是同一栋房子.它不是副本,它不是转发地址.只是神奇地说,一旦你进去,你最终会在同一所房子里,不管你曾经去过哪个地址.
    • 引导你进入房子的方向(无论使用哪个地址,或方向是相对方向,完全合格的方向,甚至是规范的完全合格的方向)都与那个地址的房子是否很难有关 - 连接房子与否

附录

编辑

我问维护命名文件,路径和命名空间页面的人让我知道这一点.他回答说.

这也是完全合格的路径吗?C:\目录.. \目录\ file.txt的

我想知道该页面的维护者用什么术语来区分..\file.txt,C:\directory\..\directory\file.txt因为他称之为相对路径.我同意双点是相对参考,但我不会将整个路径标记为相对路径,因为它在其中间有双点.在他的术语中,完全合格和规范之间似乎没有区别.(其中,我认为,这是你问题的根源).

我来自Unix和Java背景,所以也许这会带来不同.据我所知:

  • relative/partial-qualified - 如果没有关联的上下文提供信息,则无法确定位置,例如当前工作目录,当前驱动器,驱动器的当前目录,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一起使用,说它们需要一个完全合格的(但不一定是规范的?)路径,我建议该页面需要制作更清楚.

完全合格与相对

文件名是相对于当前目录的,如果它不开始与下列之一:

...*带反斜杠的磁盘指示符,例如"C:\"或"d:\". ...

由于C:\directory\..\directory\file.txt与一个blackslash磁盘代号启动时,这条道路是完全合格的,没有相对的.

如果路径包含"双点",则该路径也称为相对路径; 也就是说,路径的一个组成部分中有两个周期.此特殊说明符用于表示当前目录上方的目录,也称为"父目录".此格式的示例如下:

  • "..\tmp.txt"指定位于当前目录的父级中的名为tmp.txt的文件.
  • "....\tmp.txt"指定一个文件,它是当前目录上方的两个目录.
  • "..\tempdir\tmp.txt"指定名为tmp.txt的文件,该文件位于名为tempdir的目录中,该目录是当前目录的对等目录.

我解释这个短语包含双点意味着领先的双点.示例仅显示前导双点.术语"当前目录"通常表示进程的当前工作目录或驱动器的当前目录,仅在讨论前导双点时才有意义.但是,我可以看到如何以另一种方式解释该部分.

无论如何,每个人的成长都不同,背景也是王道,所以我想每个人在阅读文档或与不同背景的工程师讨论"完全合格"与"相对"的含义时,需要注意细微差别.