节点路径规范化尾随时间..和

时间:2014-11-06 08:46:45

标签: node.js

任何人都可以向我解释为什么这是真的:

  

规范化字符串路径,处理'..'和'。'部分。

     

当找到多个斜杠时,它们会被一个斜杠替换;   当路径包含尾部斜杠时,它将被保留。在Windows上   使用反斜杠。

Example: 
path.normalize('/foo/bar//baz/asdf/quux/..') 
// returns '/foo/bar/baz/asdf'

当我希望它返回时

'/foo/bar/baz/asdf/quux'

这来自节点文档 http://nodejs.org/api/path.html#path_path_normalize_p

修改

在运行一些测试之后,我知道“为什么”这种情况正在发生,但却不理解它背后的逻辑。 以下是输入和输出的三个示例。

/foo/bar//baz/asdf/quux/..      /foo/bar//baz/asdf
/foo/bar//baz/asdf/quux/.       /foo/bar//baz/asdf/quux
/foo/bar//baz/asdf/quux/        /foo/bar//baz/asdf/quux/

所以对于原版我可以看到双倍期“..”删除了最后一个文件夹和单个句号“。”删除尾部斜杠。我明白,当在父文件夹中包含文件时,你会在路径前面加上../我假设你实际上可以把它放在路径中的任何地方,虽然我现在似乎没有必要把它放在中间路径上。

1 个答案:

答案 0 :(得分:1)

双冒号(..)表示父目录,这是Linux中的标准目录。因此,/foo/bar//baz/asdf/quux/..基本上选择了/foo/bar//baz/asdf/quux

的父目录