重复路径符号

时间:2017-11-22 20:04:43

标签: java path nio

\\..\\..\\.\\.位于路径时,有人可以帮我解释意味着什么。我理解\\.是工作目录,\\..是工作目录的父目录,但我不能概括它们在复制时的含义。

    Path path = Paths.get("aa\\cc\\..\\..\\b.txt").normalize();
    System.out.println(path);

输出是 b.txt

2 个答案:

答案 0 :(得分:1)

文件路径中的

“..”是工作目录的父级,正如您所说的那样“..”后跟“..”只是意味着转到父级的父级。

您提供的路径:"aa\\cc\\..\\..\\b.txt""b.txt"完全相同。路径"aa\\cc\\..\\..\\b.txt"表示从工作目录开始向下到目录aa然后向下到cc然后返回到aa然后返回到工作目录然后查找档案b.txt

答案 1 :(得分:1)

文件系统中的每个目录都有一些特殊的内置文件,这些文件始终存在于其中。在Windows文件系统上,这包括...NULCON.路径元素是一个特殊的内置目录条目,它引用目录本身。同样,..条目是另一个特殊的内置目录条目,它引用其位置的父目录。另一方面,"工作目录"由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/../../..