当\\..\\..
或\\.\\.
位于路径时,有人可以帮我解释意味着什么。我理解\\.
是工作目录,\\..
是工作目录的父目录,但我不能概括它们在复制时的含义。
Path path = Paths.get("aa\\cc\\..\\..\\b.txt").normalize();
System.out.println(path);
输出是 b.txt
答案 0 :(得分:1)
“..”是工作目录的父级,正如您所说的那样“..”后跟“..”只是意味着转到父级的父级。
您提供的路径:"aa\\cc\\..\\..\\b.txt"
与"b.txt"
完全相同。路径"aa\\cc\\..\\..\\b.txt"
表示从工作目录开始向下到目录aa
然后向下到cc
然后返回到aa
然后返回到工作目录然后查找档案b.txt
。
答案 1 :(得分:1)
文件系统中的每个目录都有一些特殊的内置文件,这些文件始终存在于其中。在Windows文件系统上,这包括.
,..
,NUL
和CON
。 .
路径元素是一个特殊的内置目录条目,它引用目录本身。同样,..
条目是另一个特殊的内置目录条目,它引用其位置的父目录。另一方面,"工作目录"由shell维护,并自动用作提供给它的任何相对路径的路径根。
所以.
似乎只是"工作目录"因为指定它将相对于shell维护的工作目录 - 与" readme.txt"相同。是工作目录中的readme.txt文件。 '。'可以出现在路径中的任何位置(不必要地)引用该位置的目录。并且..
似乎可以引用父目录" 1 up"从它的位置。
所以,例如:
/home/jdoe/.
指的是目录/home/jdoe
。同样..
是目录的父级。所以:
/home/jdoe/..
指的是jdoe
的父/home
。
您有时可以将这些内容链接到您心中的内容,以便以下所有路径语句都引用完全相同的目录(即/ home / jdoe):
/home/jdoe
/home/jdoe/.
/home/jdoe/././././.
/home/jdoe/../jdoe
/home/jdoe/subdir/..
Java路径normalize
功能会删除所有'。'和' ..'部件并相应地修改路径以简化路径而不改变其实际的最终位置。
请注意' ..'可以允许您创建尝试在根目录上运行的无效路径。例如/home/jdoe/../../..
。