fs.readFileSync无法读取nodejs中的文件传递路径变量

Posted

技术标签:

【中文标题】fs.readFileSync无法读取nodejs中的文件传递路径变量【英文标题】:fs.readFileSync Cannot read file passing path variable in nodejs 【发布时间】:2019-11-06 17:04:29 【问题描述】:

我正在尝试使用 fs 读取 xml 文件。在将路径变量作为第一个参数传递给此函数后,我无法使用 fs.readFileSync 读取文件。 注意:这是在windows机器上

xmlFile="C:\Users\xyz\AppData\Local\.proxySettings.xml";
function myFunc(xmlFile) 
 let xmlData = fs.readFile(xmlFile);
 alert(xmlData);//doesn't print anything

 parser = new DOMParser();
 xmlDoc = parser.parseFromString(xmlData,"text/xml");
....
....


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <proxy_port>2582</proxy_port>


在文件中更新

 try
    ffile="jdkdkj";
  fs.readFileSync(ffile); 
catch(err)
  app.console.log(err);


Error  errno: -4058, syscall: 'open', code: 'ENOENT', path: 'jdkdkj' 

【问题讨论】:

请发布相关的代码部分,以便我们为您提供帮助 嗨,马克,我已经编辑了问题 您的代码显示 let xmlData = fs.readFile(xmlFile); 永远不会工作,因为 fs.readFile() 是异步的,并且需要回调作为第二个参数来传达结果。此外,路径中的反斜杠必须进行双重转义。 我试过 readFileSync 让 io="C:\\cygwin64\\xyz\\tmp.txt"; var data=fs.readFileSync(io);警报(数据); //什么都不显示 【参考方案1】:

javascript 中,反斜杠字符用于表示紧跟在它后面的字符应该被特殊处理。为了在 JavaScript 字符串中创建文字反斜杠,您需要使用另一个反斜杠对反斜杠进行转义。

var a = "\abc";
console.log(a); // abc
var b = "\\abc";
console.log(b); // \abc
var c = "\"abc\"";
console.log(c); // "abc"

xmlFile="C:\\Users\\xyz\\AppData\\Local\\.proxySettings.xml";
console.log(xmlFile); // C:\Users\xyz\AppData\Local\.proxySettings.xml

因此,Windows 路径名在 JavaScript 中总是需要双反斜杠

【讨论】:

我试过这个 xmlFile = xmlFile.replace(/\\/g,'\\\\');但它仍然不打印文件内容 你应该可以做到 xmlFile="C:\\Users\\xyz\\AppData\\Local\\.proxySettings.xml";让 xmlData = fs.readFile(xmlFile); xmlFile 是否在您的代码中分配了一个路径名作为字符串文字?还是从数据库中读取? 那么你不需要replace(),使用双反斜杠应该可以。告诉我们进展如何 当我将路径变量作为第一个参数传递给 readFile 或 readFileSync 时,它没有读取文件 当我执行 fs.readFileSync("file-that-doesnt-exist") 时,我得到一个如下所示的异常: 错误:ENOENT:没有这样的文件或目录,在Object.openSync (fs.js:443:3) at Object.readFileSync (fs.js:343:35) errno: -2, syscall: 'open', code: 'ENOENT', path: 'foo' 你在吗看到类似的东西?

以上是关于fs.readFileSync无法读取nodejs中的文件传递路径变量的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS读文件 readFileSync

NodeJS读文件 readFileSync

nodejs写文件

nodejs 文件系统

nodejs 读取文件中的几行

nodejs 读取文件中的几行