path.join()
来始终使用正确的斜杠。因此,例如,不应该写Unix专用的'a/b/c'
,而是应该使用path.join('a','b','c')
。
然而,似乎尽管存在这种差异,如果您没有规范化路径(例如使用path.join)并只是像a/b/c
一样编写路径,则node.js在Windows上运行您的脚本也没有问题。
那么相比于'a/b/c'
,有使用path.join('a','b','c')
更好的好处吗?无论平台如何,两者似乎都能正常工作...
path.join()
来始终使用正确的斜杠。因此,例如,不应该写Unix专用的'a/b/c'
,而是应该使用path.join('a','b','c')
。
然而,似乎尽管存在这种差异,如果您没有规范化路径(例如使用path.join)并只是像a/b/c
一样编写路径,则node.js在Windows上运行您的脚本也没有问题。
那么相比于'a/b/c'
,有使用path.join('a','b','c')
更好的好处吗?无论平台如何,两者似乎都能正常工作...
Windows文件系统在路径分隔符上既可以使用正斜杠(/)也可以使用反斜杠(\)(从DOS时代就是这样)。唯一的问题是,Windows命令行处理器(或更具体地说,本机的Windows命令行工具)倾向于将正斜杠解释为选项说明符,而不是路径组件。因此,如果您需要将路径传递给作为子进程运行的Windows命令,则需要使用反斜杠路径。此外,返回路径的Windows API调用和调用Windows API的高级语言方法将使用反斜杠,因此即使您不会将它们传递给子进程,您仍需要对它们进行规范化处理。
path.join
函数会处理路径中可能出现的多余分隔符,这些分隔符可能来自于未知来源(如用户输入、第三方API等)。
因此,path.join('a/','b')
、path.join('a/','/b')
、path.join('a','b')
和path.join('a','/b')
都会返回a/b
。
如果不使用该函数,通常需要对连接的路径的开头和结尾进行假设,并且只有零个或一个斜杠。
path.join
来确保文件夹分隔符位于正确的位置,而不是必须使用正斜杠或反斜杠。例如:path.join("/var/www", "test")
将正确地在www和test之间插入分隔符/var/www/test
path.join
зҡ„еҘҪең°ж–№жҳҜдҪ еңЁиҝҷйҮҢзҡ„еҸҰдёҖдёӘзӯ”жЎҲhttps://dev59.com/questions/emox5IYBdhLWcg3wsGaCгҖӮйӮЈдёӘзӯ”жЎҲжҠҠжҲ‘еёҰеҲ°дәҶдҪ еӣһзӯ”зҡ„еҸҰдёҖдёӘй—®йўҳ :) - Pebblreturn baseDir + relativePath + filename;
处崩溃,我也对那个答案持怀疑态度。我立即用return path.join(baseDir, relativePath, filename);
替换它。这确实非常有帮助! - Pedro简短回答:
所有的fs.*
函数 (例如fs.open
, 等等) 都为您处理了文件路径名。因此,您不需要自己使用path.join
,让您的代码难以理解。
详细回答:
所有的fs.*
函数都调用path._makeLong(path)
,然后调用path.resolve(path)
,Windows版有专门的正则表达式,考虑反斜杠\
或正斜杠/
。您可以查看它们的源代码: