只是测试 NodeJS 并仍在学习用 javascript 思考,我怎样才能让下面的这个基本 FileIO 操作起作用?
这是我希望它做的:
- 读取 XML 文件(读入内存)
- 将所有内容放入一个变量
- 从变量写入 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()
-但这将是一个坏主意,具体取决于您何时执行此操作(例如,如果操作是由来自用户的 HTTP 请求引起的)
var data = fs.readFileSync(filepath, 'utf-8');
fs.writeFileSync('c:/testout.xml', data);
关于javascript - NodeJS 基本文件 IO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10965562/