web-dev-qa-db-fra.com

node.js - comment écrire un tableau dans un fichier

J'ai un exemple de tableau comme suit

var arr = [ [ 1373628934214, 3 ],
  [ 1373628934218, 3 ],
  [ 1373628934220, 1 ],
  [ 1373628934230, 1 ],
  [ 1373628934234, 0 ],
  [ 1373628934237, -1 ],
  [ 1373628934242, 0 ],
  [ 1373628934246, -1 ],
  [ 1373628934251, 0 ],
  [ 1373628934266, 11 ] ]

Je voudrais écrire ce tableau dans un fichier tel que je reçois un fichier comme suit

1373628934214, 3 
1373628934218, 3
1373628934220, 1
......
......
33
dopplesoldner

Si c'est un très gros tableau et qu'il faudrait trop de mémoire pour le sérialiser en chaîne avant d'écrire, vous pouvez utiliser des flux:

var fs = require('fs');

var file = fs.createWriteStream('array.txt');
file.on('error', function(err) { /* error handling */ });
arr.forEach(function(v) { file.write(v.join(', ') + '\n'); });
file.end();
62
mak

N'oubliez pas que vous pouvez accéder aux bonnes vieilles API ECMAScript, dans ce cas, JSON.stringify().

Pour des tableaux simples comme celui de votre exemple:

require('fs').writeFile(

    './my.json',

    JSON.stringify(myArray),

    function (err) {
        if (err) {
            console.error('Crap happens');
        }
    }
);
12
Jairo

Une solution simple consiste à utiliser writeFile :

require("fs").writeFile(
     somepath,
     arr.map(function(v){ return v.join(', ') }).join('\n'),
     function (err) { console.log(err ? 'Error :'+err : 'ok') }
);
10
Denys Séguret

Pour faire ce que vous voulez, utilisez fs.createWriteStream (chemin [ options]) fonction de manière ES6:

const fs = require('fs');

const writeStream = fs.createWriteStream('file.txt');

const pathName = writeStream.path;

let array = ['1','2','3','4','5','6','7'];

// write each value of the array on the file breaking line
array.forEach(value => writeStream.write(`${value}\n`));

// the finish event is emitted when all data has been flushed from the stream
writeStream.on('finish', () => {
   console.log(`wrote all the array data to file ${pathName}`);
});

// handle the errors on the write process
writeStream.on('error', (err) => {
    console.error(`There is an error writing the file ${pathName} => ${err}`)
});

// close the stream
writeStream.end();
0
coderade