Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否存在一个(Java 7)文件系统,其路径为.isAbsolute(),但根为空?_Java_Java 7_Java.nio.file - Fatal编程技术网

是否存在一个(Java 7)文件系统,其路径为.isAbsolute(),但根为空?

是否存在一个(Java 7)文件系统,其路径为.isAbsolute(),但根为空?,java,java-7,java.nio.file,Java,Java 7,Java.nio.file,javadoc for说: 说明此路径是否为绝对路径。 绝对路径是完整的,因为它不需要与其他路径信息组合以定位文件 返回: true当且仅当此路径是绝对路径 javadoc for说: 将此路径的根组件作为路径对象返回,如果此路径没有根组件,则返回null 返回: 表示此路径的根组件的路径,或null 好的,所以,我在这里不知所措;有没有任何文件系统的路径可能是绝对的,根本没有根 编辑:请注意,有些路径可能有根,但不是绝对路径。例如,Windows系统上的这些: C:foo \foo\bar

javadoc for说:

说明此路径是否为绝对路径。
绝对路径是完整的,因为它不需要与其他路径信息组合以定位文件

返回:
true
当且仅当此路径是绝对路径

javadoc for说:

将此路径的根组件作为路径对象返回,如果此路径没有根组件,则返回null

返回: 表示此路径的根组件的路径,或
null

好的,所以,我在这里不知所措;有没有任何文件系统的路径可能是绝对的,根本没有根


编辑:请注意,有些路径可能有根,但不是绝对路径。例如,Windows系统上的这些:

  • C:foo
  • \foo\bar

但我要求的恰恰相反:没有根和绝对。

好吧,文件系统有一些模糊的东西。我制作了一些企业搜索爬虫,在以后的某个地方,你会注意到一些奇怪的文件系统路径。顺便说一句:这些都是自定义(重写)文件系统的实现,所以没有标准的,你可以肯定地争论几个小时,哪些是好主意,哪些不是。。。不过,我认为您不会在标准文件系统中遇到这些情况

下面是一些奇怪事情的例子:

容器文件系统中的文件(OLE2、ZIP、TAR等):c:\foo\bar\blah.ZIP\myfile

在这种情况下,您可以决定哪一项是“根”:

  • “c:\”?这不是包含该文件的zip文件的根
  • 'c:\foo\bar\blah.zip'?它可能是文件的根,但这样做可能会破坏应用程序
  • “等等,拉链”?可能是zip文件的根-但无论如何,这可能也会破坏您的应用程序
  • “/”?是否与zip文件中的“/”文件夹相同?这也许是可能的,但从长远来看,这会让你头疼不已
类似于“图形”的结构,如HTTP:

  • 您有'/foo/bar'这一事实并不意味着'/foo'甚至'/'存在。(假设这符合你的标准)。你唯一能做的就是沿着图表走
  • 请注意,像WebDav这样的协议是基于HTTP的,可能会让您感到类似的头痛。这里有一些自定义webdav文件系统的示例,它们没有“根”文件夹,但有绝对路径
尽管如此,你仍然可以说你能到达的最常见的路径(如果存在的话…)是根或者有根——但是你根本无法到达它(即使它真的不存在)

Samba/netbios

如果将完整的Samba(windows networking)网络视为单个文件系统,那么基本上会得到一个包含所有工作组的“根”,一个包含所有计算机的工作组,一个包含所有共享的计算机,然后是共享中的文件

然而。。。根和工作组实际上并不存在。它们是由广播协议组成的(如果你有一个超过1000台计算机的网络,这也是非常不可靠的)。从爬虫的角度来看,将“根”和“工作组”目录与(可靠的)其余目录完全区别对待是完全有意义的

但是

这些场景只描述根不可访问、不可靠或其他情况的路径。理论上,我认为在你能想到的任何URL中,总有一个根。毕竟,它是由定义层次结构的字符串组成的,因此根据定义层次结构有一个起点。

语义问题 根据我对这个主题的理解,一条绝对路径只有追溯到它的根,才能是绝对的。因此,绝对路径不应该没有根。最终,这只是归结到语义,尽管我们可以找到定义绝对路径的定义,例如(下面的egs)

在这一点之后剩下的唯一真正的问题是JavaAPI的定义是否也适用。我唯一能从官方Oracle源代码中找到绝对路径定义(参考根元素)的引用的地方是在官方Java教程中

绝对路径始终包含根元素

<强>如果该语句是可信的,那么没有文件系统(不管多么晦涩)可以包含java API将绝对考虑的路径,除非它还认为它包含根< /强>。p> 您可能会争辩说,在一些非继承人体系结构的文件系统中,您可能会在决定文件是否可以是自己的根时遇到一些问题。但是,根据(emphasis mine)中的定义,路径不应表示非层次元素

路径表示分层的路径,该路径由 目录和文件名元素的顺序

定义 接口说明了有关根的以下内容:

还可能存在标识文件系统层次结构的根组件

如您所见,该注释似乎暗示根用于文件系统层次结构。 现在我们必须解释什么是绝对路径。界面告诉我们以下内容:

绝对路径是完整的,因为它不需要与其他路径信息组合以定位文件

如你所见,在绝对路径的定义中没有关于根的词。唯一的限制是我们必须能够在没有进一步信息的情况下找到该文件

分层文件系统

大多数文件系统是分层的,即它们是树(或图,如果我们考虑LIN)

cf23df2207d99a74fbe169e3eba035e633b65d94