在文件path中转义空格

我想知道如何以编程方式在文件path中出现的空格前添加\ 。 我正在使用fs.readdir来获取目录的内容,如果我不逃离path的空间,那么我得到一个ENOENT错误,因为在UNIX中无锯齿的path是无效的。 我想得到以下结果:

 /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/" 

这是预期的效果。

我不知道我是否错过了一些东西,或者这是一个错误。 我很困惑,因为节点运行在与Chrome浏览器相同的JavaScript引擎上,所以我认为这些expression式会被解释为相同的。

请让我知道,如果有人知道一个办法来解决这个问题。 也许我错过了一些东西。 我只需要能够在将它们传递到fs.readdir之前就可以避开这些path,这样我就可以避免这些错误。

谢谢!

fs.readdir不需要你转义path。 我能够recursion地将fs.readdir输出目录传递回fs.readdir没有任何问题。

上面的REGEX问题只发生在Node REPL中。 一旦我在一个文件中testing了上面的代码,我就可以通过Node运行它,并获得我在Chrome控制台中看到的相同输出。

我结束了在我的代码中发现一个有点难以追查的错误。 我首先想到的是,它不是逃离我发送到fs.readdir的path,但实际上是一个问题,我是fs.stat的输出,然后检查输出是文件还是目录,并处理它相应地。

事实certificate,统计的一些结果既不是文件或目录,我的function也没有办法处理这个,所以它只是返回。 由于我没有处理这个节点的程序,所以我只是停下了脚步。 我所要做的只是添加一个额外的条件来捕捉非文件/目录的情况下(我不在乎)。

现在它工作正常!

试试这个

 var path = "'file:///Users/kevin/folder with space'"; 

或这个

 var path = "\"file:///Users/kevin/folder with space\"";