Node.js - как написать массив в файл
У меня есть массив образцов следующим образом
var arr = [ [ 1373628934214, 3 ],
[ 1373628934218, 3 ],
[ 1373628934220, 1 ],
[ 1373628934230, 1 ],
[ 1373628934234, 0 ],
[ 1373628934237, -1 ],
[ 1373628934242, 0 ],
[ 1373628934246, -1 ],
[ 1373628934251, 0 ],
[ 1373628934266, 11 ] ]
Я хотел бы записать этот массив в файл, например, я получаю файл следующим образом
1373628934214, 3
1373628934218, 3
1373628934220, 1
......
......
Ответы
Ответ 1
Если это массив huuge, и до его записи потребуется слишком много памяти для его сериализации до строки, вы можете использовать потоки:
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();
Ответ 2
Помните, что вы можете получить доступ к старым старым API-интерфейсам ECMAScript, в этом случае JSON.stringify()
.
Для простых массивов, например, в вашем примере:
require('fs').writeFile(
'./my.json',
JSON.stringify(myArray),
function (err) {
if (err) {
console.error('Crap happens');
}
}
);
Ответ 3
Простое решение - использовать writeFile:
require("fs").writeFile(
somepath,
arr.map(function(v){ return v.join(', ') }).join('\n'),
function (err) { console.log(err ? 'Error :'+err : 'ok') }
);
Ответ 4
Чтобы сделать то, что вы хотите, используя функцию fs.createWriteStream(path [, options]) в 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();
Ответ 5
Мы можем просто записать данные массива в файловую систему, но это вызовет одну ошибку, в которой ',' будет добавлено в конец файла. Для обработки этого кода ниже может быть использован:
var fs = require('fs');
var file = fs.createWriteStream('hello.txt');
file.on('error', function(err) { Console.log(err) });
data.forEach(value => file.write('${value}\r\n'));
file.end();
\Г\п
используется для новой линии.
\п
не поможет Пожалуйста, обратитесь это