node单行,多行,行数未知的输入输出流模板
单行输入
//---------------本地测试时使用
const fs = require('fs');
let fd = fs.createReadStream('./test3_data.txt'); //创建文件读取流
//--------------
const readline = require('readline'); //引入readline按行读取模块
const rl = readline.createInterface({ //创建输入输出接口
input: process.stdin, //本地测试时可写 input: fd, 将数据流作为输入
output: process.stdout //本地测试时可省略
});
//单行输入
rl.on('line',function(line){ //监听事件line,将数据line作为参数传入
//------------ 这里写代码
let data = line.split(' '); //获取第一行的内容,存为数组。注意获取到的是字符串形式
console.log(data);
//------------
});
多行输入,行数已知
//---------------本地测试时使用
const fs = require('fs');
let fd = fs.createReadStream('./test3_data.txt'); //创建文件读取流
//--------------
const readline = require('readline');
const rl = readline.createInterface({ //创建输入输出接口
input: process.stdin, //本地测试时可写 input: fd, 将数据流作为输入
output: process.stdout //本地测试时可省略
});
let K = 6; // k为已知的输入行数
let inputs = []; //初始化
rl.on('line', function(data) { //监听事件line,一行一行地作为data参数传入
// 获取输入
inputs.push(data); //数据存入数组
if (K === inputs.length) { //因为是回调函数,所以判断最后一次的data输入,才能查看结果
// 处理
result = deal(inputs);
// 输出结果
console.log(result);
// inputs.length = 0; // 清空数组,可写可不写
}
});
function deal(inputs) {
//------------这里输入自己的代码
//------------
return result;
}
多行输入,行数未知(如与第一行有关)
代码需要视情况微调
//---------------本地测试时使用
const fs = require('fs');
let fd = fs.createReadStream('./test3_data.txt'); //创建文件读取流
//--------------
const readline = require('readline');
const rl = readline.createInterface({ //创建输入输出接口
input: process.stdin, //本地测试时可写 input: fd, 将数据流作为输入
output: process.stdout //本地测试时可省略
});
let k = -1; //先给行数置-1,表示还没开始读取
let inputs = []; //初始化
rl.on('line', function(data) { //监听事件line,一行一行地作为data参数传入
// 获取输入
inputs.push(data); //数据存入数组,如果第一行是行数需要把这行放到else里
if(k === -1) {
k = parseInt(data.trim()); //读取第一行,以此得到接下来输入的行数
} else {
if(k*2 === inputs.length) { //因为是回调函数,所以判断最后一次的data输入,才能查看结果
// 处理
result = deal(inputs);
// 输出结果
console.log(result);
// inputs.length = 0; k=-1; // 清空数组,可写
}
}
});
function deal(inputs) {
//------------这里输入自己的代码
//------------
return result;
}