【node.js】readline (逐行讀取)

來源:互聯網
上載者:User

標籤:注意   require   建立   log   列印   lan   用法   介面   執行   

官網連結:http://nodejs.cn/api/readline#readline_readline

require(‘readline‘) 模組提供了一個介面,用於從可讀流(如 process.stdin)讀取資料,每次讀取一行。 它可以通過以下方式使用:

const readline = require(‘readline‘);

例子,readline 模組的基本用法:

const readline = require(‘readline‘);const rl = readline.createInterface({  input: process.stdin,  output: process.stdout});rl.question(‘你認為 Node.js 中文網怎麼樣?‘, (answer) => {  // 對答案進行處理  console.log(`多謝你的反饋:${answer}`);  rl.close();});

Interface 類

readline.Interface 類的執行個體是使用 readline.createInterface() 方法構造的。 每個執行個體都關聯一個 input 可讀流和一個 output 可寫流。 output 流用於為到達的使用者輸入列印提示,且從 input 流讀取。

‘line‘ 事件

每當 input 流接收到接收行結束符\n\r 或 \r\n)時觸發 ‘line‘ 事件。 通常發生在使用者按下 <Enter> 鍵或<Return> 鍵。監聽器函數被調用時會帶上一個包含接收的那一行輸入的字串。

rl.on(‘line‘, (input) => {  console.log(`接收到:${input}`);});
rl.question(query, callback)
rl.question(‘你最喜歡的食物是什嗎? ‘, (answer) => {  console.log(`你最喜歡的食物是 ${answer}`);});
例子:逐行地讀取檔案流

從一個檔案系統可讀流中每次一行地消耗輸入:

const readline = require(‘readline‘);const fs = require(‘fs‘);const rl = readline.createInterface({  input: fs.createReadStream(‘sample.txt‘)});rl.on(‘line‘, (line) => {  console.log(`檔案的單行內容:${line}`);});

 使用readline模組實現Node.js的輸入輸出

參考:http://blog.csdn.net/zgljl2012/article/details/48321171

建立Readline執行個體、學習裡面的介面方法、學習監聽與處理Readline事件

執行個體1:我叫小明
// 引入readline模組var readline = require(‘readline‘);//建立readline介面執行個體var  rl = readline.createInterface({    input:process.stdin,    output:process.stdout});// question方法rl.question("你叫什嗎?",function(answer){    console.log("名字是:"+answer);    // 不加close,則不會結束    rl.close();});// close事件監聽rl.on("close", function(){   // 結束程式    process.exit(0);});

首先使用了createInterface建立了一個介面執行個體,然後使用了question方法來詢問姓名,最後是監聽readline的close事件,因為無論是方法名和事件的監聽的名字都比較直觀,關於它們的作用也能一目瞭然,我這裡就只提了三點需要注意的:

1)在createInterface裡,我們需要傳入標準輸入輸出作為資料的輸入輸出資料流

2)在question方法的回呼函數裡,我們可以擷取到使用者的輸入並進行處理,同時我們進行了close操作來結束程式,否則程式不會結束

3)在close事件的監聽裡,我們執行了process.exit(0)來使程式退出的操作,因為readline模組只要一開始擷取使用者輸入就不會結束,必須使用這種直接的方式來結束程式

執行個體2:輸入與輸出
// 引入readline模組var readline = require(‘readline‘);var rl = readline.createInterface({    input: process.stdin,    output: process.stdout});rl.on(‘line‘, function(line){    switch(line.trim()) {        case ‘copy‘:            console.log("複製");            break;        case ‘hello‘:            rl.write("Write");            console.log(‘world!‘);            break;        case ‘close‘:            rl.close();            break;        default:            console.log(‘沒有找到命令!‘);            break;    }});rl.on(‘close‘, function() {    console.log(‘bye bye‘);    process.exit(0);});

‘line’事件,這個事件就是在使用者輸完一行,按下斷行符號後就會觸發的事件,它會將使用者輸入的資料通過回呼函數傳回來,可在此方法裡處理使用者輸入的資料。

 

【node.js】readline (逐行讀取)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.