好吧,文件系统有一些晦涩难懂的东西。我做了一些企业搜索爬虫,在路上的某个地方,你会注意到一些奇怪的文件系统问题。顺便说一句:这些都是自定义(被覆盖的)文件系统的实现,所以没有标准的,你绝对可以争论几个小时,这些东西中哪些是好主意,哪些不是......不过,我不认为您在标准文件系统中会遇到任何这些情况。
以下是一些奇怪的事情的例子:
容器文件系统(OLE2、ZIP、TAR 等)中的文件:c:\foo\bar\blah.zip\myfile
在这种情况下,您可以确定哪个项目是“根”:
- 'c:\' ?这不是包含该文件的 zip 文件的根目录...
- 'c:\foo\bar\blah.zip' ?它可能是文件的根目录,但这样做可能会破坏您的应用程序。
- “啪啪啪.zip”?可能是 zip 文件的根 - 但无论如何,这也可能破坏您的应用程序。
- '/' ?就像在zip文件中的“/”文件夹中一样?这可能是可能的,但从长远来看,这会让你头疼。
像HTTP这样的结构的“图形”:
- 你有“/foo/bar”的事实并不意味着“/foo”甚至“/”存在。(假设这符合你的标准)。你唯一能做的就是走图表...
- 请注意,像WebDav这样的协议是基于HTTP的,可能会给你带来类似的麻烦。我在这里有一些自定义webdav文件系统的例子,这些系统没有“根”文件夹,但有绝对路径。
不过,你可以争辩说,你可以到达的最上面的最常见的路径(如果存在的话......)是根或有根 - 但你根本无法到达它(即使它真的不存在)。
桑巴/内比奥斯
如果您将完整的Samba(Windows网络)网络视为单个文件系统,那么您基本上最终会得到一个包含所有工作组的“root”,一个包含所有计算机的工作组,一台包含所有共享的计算机,然后是共享中的文件。
然而。。。根和工作组实际上并不存在。它们是由广播协议组成的(如果你有一个超过1000台计算机的网络,这也是非常不可靠的)。从爬虫的角度来看,将“根”和“工作组”目录与(可靠的)其余目录完全不同地对待是有意义的。
然而
这些方案仅描述根无法访问、不可靠或其他内容的路径。从理论上讲,我认为在你能想到的任何URL中,总有一个根。毕竟,它被组成为定义层次结构的字符串,因此根据定义,层次结构具有开始。