我正在尝试阅读文件的内容。文件存在检查通过,即使这样文件读取除外如下所示:
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
我怎么能纠正这个。
答案 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
(不推荐使用),这至少会减少检查存在和读取文件之间的窗口,但它确实仍然没有很有道理。