2015-05-25 3 views
1

Я пишу программу в Node.js, которая (в некоторых ситуациях) хочет действовать как простой фильтр: читать все от stdin (до конца файла), выполнять некоторую обработку, писать результат в stdout.Прочтите весь текст из stdin

Как вы «читаете все, начиная с stdin»? Ближайшие решения, которые я нашел до сих пор, похоже, работают либо по одной строке за раз с консоли, либо работают только тогда, когда stdin - это файл, а не канал.

ответ

6

get-stdin будет делать трюк.


Несколько заметок, читающих между строк в вашем вопросе.

Поскольку вы отметили вопрос «синхронный», я просто хочу отметить, что stdin является асинхронным - только в node.js. Вышеупомянутая библиотека является самой простой. Он будет обрабатывать весь ввод как строку или буфер.

Если возможно, лучше всего писать вашу программу в стиле потоковой передачи, но некоторые варианты использования возможны для потоковой передачи (например, количество слов), а некоторые - нет (т. Е. Обратного ввода).

Также «одна строка за раз с консоли» является артефактом терминала, который буферизует ваши нажатия клавиш. Если вы хотите, чтобы некоторые из них «я сожалею, что попросил» подробно рассказать об удивительном the TTY Demystified.

-1

Это также работает, используя новый streams2 API

var fs = require("fs"); 

var readStream = fs.createReadStream('./Ip.txt'); 

readStream.on("readable", function(){ 
    var buf = readStream.read(); 
    console.log(buf.toString()); 
}) 
+1

Всего по теме, вопрос явно о стандартном вводе читает в трубах, не читает файл. –

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