nodejs:无法读取文件内容

时间:2017-05-05 09:00:07

标签: 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"+err);
            }            
            console.log("data:"+data);                
    });
});

输出

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

我怎么能纠正这个。

1 个答案:

答案 0 :(得分:3)

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

但是fs.exists已经被弃用了很长时间,并且单独地,在尝试读取文件之前检查文件是否存在是没有意义的,因为它可以在之后创建或删除 之前检查。只是尝试读取文件,如果不能,则处理错误:

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.existsSync(不推荐使用),这至少会减少检查存在和读取文件之间的窗口,但它确实仍然没有很有道理。