Node.js fs.readFile()

时间:2014-08-16 13:34:22

标签: node.js

任何人都可以想到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 - 也不起作用。

3 个答案:

答案 0 :(得分:10)

因为选项是对象而不是字符串:

  

fs.readFile(filename,[options],callback)

     
      
  • filename字符串
  •   
  • options对象   
        
    • encoding字符串| Null default = null
    •   
    • flag 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");