NodeJS基本FileIO

只是testingNodeJS,仍然学习思考在JavaScript中,我怎么能得到这个基本的FileIO操作下面的工作?

以下是我想要做的事情:

  • 读取XML文件(读入内存)
  • 把所有内容放入一个variables
  • 从variables写入XML文件
  • 输出应该与原始文件相同
var fs = require('fs'); var filepath = 'c:\/testin.xml'; fs.readFile(filepath, 'utf8', function(err, data) { if(err) { console.error("Could not open file: %s", err); } }); fs.writeFile('c:\/testout.xml', data, function(err) { if(err) { console.error("Could not write file: %s", err); } }); 

你的代码的问题是,你试图将你读取的数据写入到目标文件之前 – 这些操作是异步的。

只需将文件写入代码移到readFile操作的回调中:

 fs.readFile(filepath, 'utf8', function(err, data) { if(err) { console.error("Could not open file: %s", err); return; } fs.writeFile('c:/testout.xml', data, function(err) { if(err) { console.error("Could not write file: %s", err); } }); }); 

另一个选择是使用readFileSync() – 但这是一个坏主意,取决于你什么时候这样做(例如,如果oepration是由用户的HTTP请求引起的)

 var data = fs.readFileSync(filepath, 'utf-8'); fs.writeFileSync('c:/testout.xml', data);