在线
客服

发布
需求

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

同步异步的问题

var data='Hello,Node.js';fs.writeFile('output.txt',data,function(err){        if (err) {                console.log(err);        }else {                console.log('ok.');        }});fs.stat('output.txt',function(err,stats){        if (err) {                console.log(err);        }else {                console.log('isFile:'+stats.isFile());                console.log('isDirectory:'+stats.isDirectory());                if (stats.isFile()) {                        console.log('size:'+stats.size);                        console.log('birth time:'+stats.birthtime);                        console.log('modified time:'+stats.mtime);                }        }});输出内容为isFile:trueisDirectory:falsesize:0birth time:Fri Jun 02 2017 14:47:28 GMT+0800 (CST)modified time:Fri Jun 02 2017 15:16:04 GMT+0800 (CST)ok.问1:前面做了写入操作,下面显示的最后更改时间也是运行代码的时间,为什么size是0?问2:为什么第一个函数的回调函数会是后执行的?

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与1

fs.writeFile = function(path, data, options, callback) {
var callback = maybeCallback(arguments[arguments.length - 1]);
if (util.isFunction(options) || !options) {
options = { encoding: 'utf8', mode: 438 /*=0666*/, flag: 'w' };
} else if (util.isString(options)) {
options = { encoding: options, mode: 438, flag: 'w' };
} else if (!util.isObject(options)) {
throw new TypeError('Bad arguments');
}
assertEncoding(options.encoding);
var flag = options.flag || 'w';
fs.open(path, options.flag || 'w', options.mode, function(openErr, fd) {
if (openErr) {
if (callback) callback(openErr);
} else {
var buffer = util.isBuffer(data) ? data : new Buffer('' + data,
options.encoding || 'utf8');
var position = /a/.test(flag) ? null : 0;
writeAll(fd, buffer, 0, buffer.length, position, callback);
}
});
};
这是writeFile的源码,意思就是writeFile默认以'w'的方式打开,也就是打开文件的时候要先把文件内容置空。如果你想要追加打开,手动修改下配置。如:fs.writeFile('output.txt',data,{flag: 'w+'},function(err){});

使用道具 举报

发新帖
国内首家创新型IT技术需求众包服务平台,软件需求就上天盟网! 立即登录 立即注册