2013-07-12 38 views
25

Tôi có một mảng mẫu như sauNode.js - làm thế nào để viết một mảng nộp

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

Tôi muốn viết mảng này vào một tập tin như tôi nhận được một tập tin như sau

1373628934214, 3 
1373628934218, 3 
1373628934220, 1 
...... 
...... 

Trả lời

49

Nếu đó là một mảng huuge và nó sẽ mất quá nhiều bộ nhớ để serialize nó để một chuỗi trước khi viết, bạn có thể sử dụng luồng:

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(); 
+1

Tại sao không đặt 'file.end();' sau vòng lặp thay vì kiểm tra chỉ mục? –

+1

Bạn nói đúng, không có lý do gì để không. Tôi đã cập nhật mã. – mak

+0

Cảm ơn! Mảng của tôi là theo thứ tự 1000+ vì vậy phương pháp này hoạt động hoàn hảo – dopplesoldner

8

một giải pháp đơn giản là sử dụng writeFile:

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

Nếu bạn làm thế, đừng quên gọi lại với err: http://nodejs.org/api/fs.html#fs_fs_writefile_filename_data_options_callback – bryanmac

+0

@ bryanmac Vâng, nó sạch hơn. đã chỉnh sửa. –

+0

Cảm ơn @dystroy! Nó rất sạch sẽ. – dopplesoldner

9

Hãy nhớ rằng bạn có thể truy cập API ECMAScript cũ tốt, trong trường hợp này là JSON.stringify().

Đối với mảng đơn giản như trong ví dụ của bạn:

require('fs').writeFile(

    './my.json', 

    JSON.stringify(myArray), 

    function (err) { 
     if (err) { 
      console.error('Crap happens'); 
     } 
    } 
); 
+0

Không liên quan đến ArrayBuffers –

+1

nếu 'myArray' là rất lớn,' JSON.stringify (myArray) 'sẽ trở thành một vấn đề. –

Các vấn đề liên quan