如何快速保存文件中的数组?

时间:2016-09-29 17:07:30

标签: javascript node.js file multidimensional-array nodes

我创建了大小为var QL = [[],[],[],[]];的数组[100][20][100][3],每次程序结束时我都需要保存数组,当我的程序再次启动时 IF 文件存在,然后加载。 的问题

1-如何快速(我的代码在下面,但速度非常慢!)?

2 - 如何快速加载?

QLearn.QLSave = function (){
var jsonQtable = [];
for (var a=0; a<100; a++) {
    for (var b=0; b<20; b++) {
        for (var c=0; c<100; c++){
            for (var d=0; d<2; d++){
                jsonQtable.push(QL[a,b,c,d].toJSON)
            }
        }
    }
}
QLearn.ui.logger.log('Saving QL...');
var dir = './Qtable';
var fileName = dir + '/QL'+'.json';
fs.writeFile(fileName, JSON.stringify(jsonQtable), function (err){
    if (err) {
        QLearn.ui.logger.log('Failed to save! '+err);
    } else {
        QLearn.ui.logger.log('Saved to '+fileName);
    }
});}

1 个答案:

答案 0 :(得分:0)

Intead您批量编写文件,解决方案是在每次迭代中附加文件,使用fs.appendFile

QLearn.QLSave = function (){
var jsonQtable = [];
for (var a=0; a<100; a++) {
    for (var b=0; b<20; b++) {
        for (var c=0; c<100; c++){
            for (var d=0; d<2; d++){
                fs.appendFile(fileName, QL[a,b,c,d].toJSON, function (err) {
                   if (!err){ 
                      console.log("Success in insert: " + QL[a,b,c,d].toJSON);
                   }
                });
            }
        }
    }
}