在文件路径中转义空格

我想知道如何以编程方式在出现在文件路径中的空格前添加 。 我正在使用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++