2015-06-10 3 views
2

Очевидное решение для fs.writeFile, я полагаю.Как написать большой массив в файл .txt с помощью node.js?

Но ответ this вопроса предполагает, что я должен использовать технологию Stream.

Я сейчас пытаюсь этот код, чтобы удалить строку из текстового файла путем преобразования его в массив:

var index = randomIntFromInterval(1, unfinished_searches.length-1); // remove index 
unfinished_searches.splice(index, 1); 

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

, который возвращает следующую ошибку:

TypeError: undefined is not a function 

в join в этой строке:

unfinished_searches.forEach(function(v) { file.write(v.join(', ') + '\n'); }); 
+0

Что такое 'V'? Распечатайте его в консоли и проверьте – thefourtheye

ответ

0

Если вы хотите удалить строку из большого текста файл, рассмотрите возможность использования pipes. Просто создайте read stream, подключите его к вашей «функции проверки», а затем подключите его к write stream.

Таким образом, вам не нужно загружать весь файл в память. В памяти будет только небольшое количество данных одновременно. Конечно, вы не можете записать его в тот же файл. Но после полной операции вы можете переименовать этот файл и удалить старый.

EDIT: Это сообщение может быть полезным для Вас: Parsing huge logfiles in Node.js - read in line-by-line

Смежные вопросы