在文件路径中转义空格
我想知道如何以编程方式在出现在文件路径中的空格前添加 。 我正在使用
fs.readdir
来获取目录的内容,如果我没有将路径中的空格转义出来,那么我会遇到ENOENT
错误,因为在UNIX ENOENT
转义路径无效。 我想得到以下结果:
/path/with spaces/in/them/
但是,我遇到了NODE REPL中的REGEX问题。 当我做 :
var path = '/path/with spaces/in/them/';
var escapedPath = path.replace(/(s)/, " ");
我得到的结果是:
'/path/with spaces/in/them/'
当我尝试在Chrome控制台中运行相同的代码时,我得到:
"/path/with spaces/in/them/"
这是期望的效果。
我不确定我是否错过了某些东西,或者如果这是一个错误。 我很困惑,因为Node运行在与Chrome相同的JavaScript引擎上,所以我认为这些表达式会被解释为相同。
请让我知道是否有人知道如何解决这个问题。 也许我错过了一些东西。 在将它们传递给fs.readdir
之前,我只需要能够将路径转义fs.readdir
这样我就可以避免这些错误。
谢谢!
fs.readdir
不需要你转义路径。 我能够递归地将fs.readdir
输出目录传递回fs.readdir
没有任何问题。
REGEX上面的问题只发生在Node REPL中。 一旦我在一个文件中测试了上述代码,我就可以通过Node运行它,并获得我在Chrome控制台中看到的相同输出。
我最终在我的代码中发现了一个有点难以追查的错误。 我首先想到,它并不是逃避我发送到fs.readdir
的路径,但实际上是一个问题,我在fs.stat
中输出fs.readdir
,然后检查输出是文件还是目录,然后处理它相应地。
事实证明,stat的一些结果既不是文件或目录,我的函数也没有办法处理这个,所以它只是返回。 由于我没有处理器,所以我的节点程序刚刚停止。 我所要做的就是添加一个额外的else
条件,以赶上非文件/目录的情况下(我不关心反正)。
现在它的工作正常!
试试这个
var path = "'file:///Users/kevin/folder with space'";
或这个
var path = ""file:///Users/kevin/folder with space"";
链接地址: http://www.djcxy.com/p/73111.html
上一篇: Escape spaces in File Path
下一篇: Using friend functions for I/O operator overloading in c++