任何人都可以想到readFile函数的回调没有被执行的原因吗?
fs.exists(filePath, function(exists){
if(exists){ // results true
fs.readFile(filePath, "utf8", function(err, data){
if(err){
console.log(err)
}
console.log(data);
})
}
});
filePath是./etc/coords.txt,它是一个json格式的字符串。
使用Sync版本 - readFileSync - 也不起作用。
答案 0 :(得分:10)
因为选项是对象而不是字符串:
fs.readFile(filename,[options],callback)
filename
字符串options
对象
encoding
字符串| Null default = nullflag
String default ='r'callback
功能异步读取文件的全部内容。例如:
fs.readFile('/etc/passwd', function (err, data) { if (err) throw err; console.log(data); });
回调传递两个参数(错误,数据),其中数据是 文件的内容。
所以:
fs.exists(filePath, function(exists){
if(exists){ // results true
fs.readFile(filePath, {encoding: "utf8"}, function(err, data){
if(err){
console.log(err)
}
console.log(data);
})
}
});
答案 1 :(得分:0)
我认为这可能与文本文件的问题有关。 此文件由C#应用程序生成,该应用程序向文件写入包含Environment.NewLine的流 不管怎么说,一旦我移除到Environment.NewLine它就可以了。
答案 2 :(得分:0)
如果在本地找到它只是使用
var contents = require(" ./ file.txt");