只是testingNodeJS,仍然学习思考在JavaScript中,我怎么能得到这个基本的FileIO操作下面的工作?
以下是我想要做的事情:
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);