Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript nodejs:无法读取文件内容_Javascript_Node.js - Fatal编程技术网

Javascript nodejs:无法读取文件内容

Javascript nodejs:无法读取文件内容,javascript,node.js,Javascript,Node.js,我正在尝试读取文件的内容。文件存在性检查通过,即使文件读取例外,如下所示: var fs = require('fs') fs.exists('c:\\abc.txt',function(exists){ console.log("exists"); fs.readFile('c:\\abc.txt', 'UTF-8', function (err,data) { if (err) { console.log("err"+e

我正在尝试读取文件的内容。文件存在性检查通过,即使文件读取例外,如下所示:

var fs = require('fs')
fs.exists('c:\\abc.txt',function(exists){
    console.log("exists");
    fs.readFile('c:\\abc.txt', 'UTF-8', function (err,data) {
            if (err) {
                console.log("err"+err);
            }            
            console.log("data:"+data);                
    });
});
输出

exists
errError: ENOENT: no such file or directory, open 'c:\abc.txt'
data:undefined

如何更正此问题。

您的代码没有检查来自
fs.exists
的结果是否文件存在。您只是在回调中继续读取文件。您需要检查第一个参数,看看它是true(文件存在)还是false(不存在)。目前,您的代码根本没有使用
exists
参数。(如果
err
不是
null
,它还应该退出
readFile
回调,或者使用
data
跳过位)

但是已经有很长一段时间不推荐使用了,另外,在尝试读取文件之前检查文件是否存在没有任何意义,因为可以在检查存在之后但在读取之前创建或删除文件。只要尝试读取该文件,如果无法执行以下操作,请处理错误:

var fs = require('fs');
fs.readFile('c:\\abc.txt', 'UTF-8', function(err, data) {
    if (err) {
        console.log("err"+err);
        return;
    }
    console.log("data:"+data);                
});

如果您真的想在读取之前检查是否存在,可以使用(未弃用),这至少减少了检查是否存在和读取文件之间的时间间隔,但实际上仍然没有多大意义。

fs.exists已弃用多年,请参见反斜杠字符取消任何“特殊含义”后面的字符有,所以“\\”被简单地读为“\”,您需要写“\\\”才能得到“\\”。这就是为什么即使您键入了两个反斜杠,is也没有说只有一个反斜杠的文件“c:\abc.txt”。感谢@TJ Crowder,虽然“.exists”暂时有效,但它提到社区不再支持它,并且在更高版本中可能会被弃用。@StillNestling:“…在更高版本中可能会被弃用”它现在被弃用,多年来一直如此。在某个时候,它很可能被移除。我一直在关注这个故事。我不建议使用不推荐使用的API,特别是长的不推荐使用的API。