NodeJS Basic FileIO
NodeJS Basic FileIO
刚刚测试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);
相关文章:
- 使用HTML进行Visual Basic UI设计
- AJAX Raw Javascript Basic
- jQuery AJAX Cross Domain with BASIC Authentication
- 函数未定义的Javascript(Basic)
- 使用用户控制在Basic HTML播放器中播放Youtube视频
- Wordpress basic'引导程序'插件开发代码
- 在Visual Basic中加密AES,然后在服务器到客户端中解密AES
- Backbone js视图渲染点击方法未调用[Very Basic]
- Basic jQuery Slider中上一张/下一张幻灯片的自定义链接触发器
- Basic Javascript onclick
- Simple/Basic Jquery或Javascript字符串替换多个值
- Basic jquery deferred usage with ajax
- github basic authentication with javascript (Appcelerator)
- NodeJS Basic FileIO
- jQuery basic:如何使用此结构创建循环
- Jquery basic:如何随机化这个数组并仍然调用所有参数
- 在Chrome扩展中运行Javascript-> Basic
- Chrome 的 HTTP BASIC 身份验证注销问题
- 在向网络服务器提交 pdf 时发送 HTTP Basic-Auth 标头信息
- Angular-Service Array.filter vs basic for loop