最近在尝试用 JavaScript (Node.js) 写题。为此,特地看了 ECMAScript 2017 Language Specification(大雾)。写题一般是从文件输入,确切地说是,将 stdin 重定向到文件。在C/C++ 中这可以通过 freopen 函数很方便地实现, 因而想知道 Node.js 是否提供类似的函数。查看 Node.js v6.11.1 API 文档 中关于 Readline 模块(module)的介绍,恰好发现了一个例子:

Example: Read File Stream Line-by-Line

const readline = require('readline');
const fs = require('fs'); const rl = readline.createInterface({
input: fs.createReadStream('sample.txt')
}); rl.on('line', (line) => {
console.log(`Line from file: ${line}`);
});

需要指出,Node.js 的输入输出是通过 Stream 模块实现的,类似于 C++ 中的流。

据此,我实现了将 stdin 重定向到文件:

const readline = require('readline');
const fs = require('fs');
var lines = [], cur = 0; function cb(err){
const rl = readline.createInterface({input: (err? process.stdin: fs.createReadStream("in.txt"))}).on('line', (line) => {
lines[cur++] = line;
}).on('close', () => {
cur = 0;
main();
});
} // With the asynchronous methods, there is no guaranteed ordering. fs.access("in.txt", cb); function readLine(){
return lines[cur++];
} function main(){
// ...
}

此法有个问题:无法处理强制在线的情况。

这种方式先把所有输入读进来,存起来;再进行处理。与能否处理强制在线无关。

最新文章

  1. 自己动手,实现一种类似List<T>的数据结构(二)
  2. Java异常之自定义异常
  3. EasyUI treegrid 获取编辑状态中某字段的值 [getEditor方法获取不到editor]
  4. ajax完整结构
  5. UVa 10106 Product
  6. WDF模型驱动程序开发
  7. 解决Ubuntu下sublime中不能输入中文的问题
  8. iOS用心学 UI基础之UIView
  9. [置顶] 【cocos2d-x入门实战】微信飞机大战之二:别急,先处理好CCScene和CCLayer的关系
  10. 构建具有深度和灵活性的安卓Wear应用
  11. QMVC
  12. vue2.0 关于Vue实例的生命周期
  13. 微信H5中静默登录及非静默登录的正确使用姿势
  14. mui 窗口管理及窗口之间的数据传递
  15. Flask最强攻略 - 跟DragonFire学Flask - 第十四篇 Flask-SQLAlchemy
  16. Netsharp下载及环境搭建
  17. Django中条件过滤:按时间筛选
  18. XSS(跨站脚本攻击)漏洞解决方案
  19. 【独家】终生受用的Redis高可用技术解决方案大全
  20. js 四种调用模式和this的关系总结

热门文章

  1. ajax的序列化表单提交
  2. 函数的扩展——箭头函数this的使用
  3. 【dp】P1982 小朋友的数字
  4. ubuntu : 无法安全地用该源进行更新,所以默认禁用该源。
  5. Python爬虫系列-PyQuery详解
  6. Java-JFrame开发汇总整理
  7. token验证机制
  8. 【java】类成员的访问限制关系
  9. python-time模块--pickle模块
  10. linux笔记(1)