Node.js 文件输入
2024-08-25 08:17:32
最近在尝试用 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(){
// ...
}
此法有个问题:无法处理强制在线的情况。
这种方式先把所有输入读进来,存起来;再进行处理。与能否处理强制在线无关。
最新文章
- 自己动手,实现一种类似List<;T>;的数据结构(二)
- Java异常之自定义异常
- EasyUI treegrid 获取编辑状态中某字段的值 [getEditor方法获取不到editor]
- ajax完整结构
- UVa 10106 Product
- WDF模型驱动程序开发
- 解决Ubuntu下sublime中不能输入中文的问题
- iOS用心学 UI基础之UIView
- [置顶] 【cocos2d-x入门实战】微信飞机大战之二:别急,先处理好CCScene和CCLayer的关系
- 构建具有深度和灵活性的安卓Wear应用
- QMVC
- vue2.0 关于Vue实例的生命周期
- 微信H5中静默登录及非静默登录的正确使用姿势
- mui 窗口管理及窗口之间的数据传递
- Flask最强攻略 - 跟DragonFire学Flask - 第十四篇 Flask-SQLAlchemy
- Netsharp下载及环境搭建
- Django中条件过滤:按时间筛选
- XSS(跨站脚本攻击)漏洞解决方案
- 【独家】终生受用的Redis高可用技术解决方案大全
- js 四种调用模式和this的关系总结