gpt4 book ai didi

java - 完全合格的路径Vs。规范路径

转载 作者:行者123 更新时间:2023-12-01 19:21:28 24 4
gpt4 key购买 nike

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

我很清楚规范的路径是什么,但是我不了解fully-qualified path's concepts

对于文件或目录,完全限定的路径仅存在一件事吗?样的规范路径。

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

编辑:
还有一件事,
符号链接(symbolic link)或硬链接(hard link)属于完全限定路径吗?

编辑
我问一个维护Naming Files, Paths, and Namespaces页面的人让我知道这一点。
他回答我。

这也是完全限定的路径吗?
C:\directory\..\directory\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”放入所需的函数完全限定的路径中,则该函数将永远不会重新解释路径,然后失败。

如果是这样,则完全合格的路径与规范路径完全相同。是不是

最佳答案

“完全限定的路径”与“绝对路径”同义

  • “完全限定”和“绝对路径”含义相同-相对于隐含或指定上下文的路径。
  • 每个路径都是标准路径,或者是相对路径
  • 文件系统上的每个位置都有许多可用来引用它的路径,包括许多完全限定的路径:
  • 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.



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

    What's the difference between getPath(), getAbsolutePath(), and getCanonicalPath() in Java?

    但在所有“绝对”的地方都用“完全合格”代替。

    为了清楚起见,有些人还会使用术语“相对路径”来指代其中包含“相对引用”(双点 ..)的路径。例如,由于双点,有些人可能将 C:\Program Files\Microsoft\\..\temp.txt称为“相对路径”,但我将其称为具有相对引用的完全限定路径。希望从对话中可以清楚地看出他们说“相对路径”(相对于上下文的路径或其中具有相对引用的路径)的含义。

    Are both of them totally same concepts?



    不,正如另一个SO问题所指出的那样,有很多方法可以指定到某个位置的完全限定路径(绝对路径),但是只有那些完全限定路径中的一个被认为是该位置的规范路径。

    One more thing, Is a UNC path belong to fully-qualified path too?



    是的,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?



    它是一个独立的概念。路径(无论是相对路径还是标准路径)都指向文件系统中的某个位置。该位置的实体可能是许多东西之一:普通文件,目录,符号链接(symbolic link),硬链接(hard link),设备,命名管道等。符号链接(symbolic link)或硬链接(hard link)具有可导致访问以下内容的元数据您实际在该位置查找的数据。

    类比时间

    您可以按照指向某人房屋的方向来考虑路径和链接:
  • 相对路径是从您当前位置开始的路线
  • a 完全限定的路径是市政厅的指示,无论您身在何处
  • 在我们陌生的Unixville小镇上,每个人都同意并暗含“完全合格的指示”始终始于市政厅,这很奇怪,每个人都称其为“/”。
  • (Windowsville)的下一个城镇具有多个市政厅(城镇的每个部分一个),称为C:\D:\E:\等。
  • 即使他们都是从同一起点(市政厅)开始的,不同的人可能会给您不同的方向(路径),以到达同一所房屋-有些方向会比其他方向更直接。
  • 规范路径是完全合格的指导,是从市政厅到达所需房屋的最简单,最直接的方法
  • 一个符号链接(symbolic link)就像一个空很多,上面有一个注释,该注释给出了指向转发地址的方向
  • 导致您到达此处的方向类型(无论是相对方向,完全限定的方向,甚至是规范的完全限定的方向)与是否通往房屋或此处具有转发方向的任何空地无关。
  • 有一种奇怪的情况,您所指的街道之一实际上是符号链接(symbolic link)(绕道吗?是门户吗?)-如果我们过分仔细地看,这里的类比就会消失,所以就忽略它:-)
  • 一个硬链接(hard link)是一栋可从两个或更多不同地址访问的房屋。
  • 想想榆树街和大街拐角处的房屋。邮局错误地给了它两个地址:10 Elm Str20 Main Str。不管您去哪个地址,都将住在同一所房子。
  • 在我们陌生的小镇上,这些硬链接(hard link)房屋可以有多个地址,而地址不必彼此靠近。
  • 不管您去哪个地址,它都在同一屋子里。它不是副本,也不是转发地址。神奇的是,一旦您进入屋内,无论您过去到达哪个地址,都将到达同一所房子。
  • 引导您到达房屋的方向(无论使用哪个地址,或者该方向是相对方向,完全限定的方向,甚至是规范的完全限定的方向)都与该地址处的房屋是否是硬链接(hard link)房子或不是

  • 附录

    Edit

    I asked someone who maintains Naming Files, Paths, and Namespaces page to let me know this. And he replied me.

    Is this also Fully-qualified path? C:\directory..\directory\file.txt



    我不知道该页面的维护者将使用哪些术语来区分 ..\file.txtC:\directory\..\directory\file.txt,因为他将它们称为相对路径。我同意双点是相对引用,但是我不会将整个路径标记为相对,因为它的中间有双点。用他的术语,完全合格和规范之间似乎没有区别。 (我想这就是您问题的出处)。

    我来自Unix和Java背景,因此也许与众不同。据我了解:
  • 相对/部分限定的-如果没有关联的上下文提供信息(例如,当前工作目录,当前驱动器,驱动器的当前目录,shell PATH设置,Java CLASSPATH设置或引用URL。
  • 绝对/完全限定的-位置独立于关联的上下文,即,无论当前工作目录,当前驱动器,驱动器的当前目录,shell PATH设置,Java CLASSPATH设置如何,位置都相同或引用网址。
  • 规范-最简单的完全合格,即没有双点的

  • 所以
  • ..\file.txt-相对
  • C:\directory\..\directory\file.txt-全限定
  • C:\directory\file.txt-合格且规范的
  • C:\directory\..\directory\file.txt上不清楚 section of the MSDN page:如果 C:\directory\..\directory\file.txt被认为是相对的,并且不能与Windows API一起使用,即它们需要完全限定的路径(但不一定是规范的路径),我建议页面需要使它更清晰。

    Fully-qualfied vs Relative

    A file name is relative to the current directory if it does not begin with one of the following:

    ... * A disk designator with a backslash, for example "C:\" or "d:\". ...



    由于 C:\directory\..\directory\file.txt以带黑杠的磁盘标识符开头,因此该路径是完全限定的,而不是相对的。

    A path is also said to be relative if it contains "double-dots"; that is, two periods together in one component of the path. This special specifier is used to denote the directory above the current directory, otherwise known as the "parent directory". Examples of this format are as follows:

    • "..\tmp.txt" specifies a file named tmp.txt located in the parent of the current directory.
    • "....\tmp.txt" specifies a file that is two directories above the current directory.
    • "..\tempdir\tmp.txt" specifies a file named tmp.txt located in a directory named tempdir that is a peer directory to the current directory.


    我将短语解释为包含双点,表示前导双点。这些示例仅显示前导双点。术语“当前目录”通常表示进程的当前工作目录或驱动器的当前目录,仅在谈论前导双点时才有意义。但是,我可以看到如何用另一种方式解释该部分。

    无论如何,每个人的成长都各不相同,上下文是最重要的,所以我想每个人在阅读文档或与不同背景的工程师讨论“完全合格”与“相对”的含义时都需要小心细微差别。

    关于java - 完全合格的路径Vs。规范路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3598407/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com