【Node】fs

var fs = require('fs') // fs 文件系统
var stdin = process.stdin
var stdout = process.stdout
var stats = []
fs.readdir(process.cwd(), function(err, files) {
console.log('')
if (!files.length) {
return console.log(' \003[31m No files to show!\003[39\n')
}
console.log(' Select which file or directory you want to see\n')
function file(i) {
var filename = files[i]
fs.stat(__dirname + '/' + filename, function(err, stat) { // fs.stat会给出文件或目录的元数据
stats[i] = stat
if (stat.isDirectory()) {
console.log(' '+i+' \033[36m' + filename + '/\033[39m')
} else {
console.log(' '+i+' \033[90m' + filename + '/\033[39m')
}
if (++i == files.length) {
read()
} else {
file(i)
}
})
}
function read() {
console.log('')
stdout.write(' \033[33mEnter you choice: \033[39m')
stdin.resume()
stdin.setEncoding('utf-8')
stdin.on('data', option)
}
function option(data) {
var filename = files[Number(data)]
if (!filename) {
stdout.write(' \033[31mEnter your choice: \033[39m')
} else {
stdin.pause()
if (stats[Number(data)].isDirectory()) {
fs.readdir(__dirname + '/' + filename, function(err, files) {
console.log('')
console.log(' (' + files.length + ' files)')
files.forEach(function(file) {
console.log(' - ' + file)
})
console.log('')
})
} else {
fs.readFile(__dirname + '/' + filename, 'utf-8', function(err, data) {
console.log('')
console.log('\033[90m' + data.replace(/(.*)/g, ' $1') + '\033[39m')
})
}
}
}
file(0)
})

console.log('Hello world')
process.stdout.write('Hello world')
console.log('Hello world')
console.log内部做了这样的事情:它在指定的字符串后加上\n(换行)字符,并将其写到stdout流中
【Node】fs的更多相关文章
- 【node】fs模块,文件和目录的操作
检查文件是否存在,查询文件信息 fs.stat() fs.stat('./server.js', function (err, stat) { if (stat && stat.isF ...
- [转]【NODE】用WS模块创建加密的WS服务(WSS)
[From] https://luojia.me/2015/07/21/%E3%80%90node%E3%80%91%E7%94%A8ws%E6%A8%A1%E5%9D%97%E5%88%9B%E5% ...
- 【node】安装和配置node项目文件
需要把 views文件中的子文件全部改为以 .ejs的后缀 1·npm install express -g (全局安装) 2·npm install -g express-generator (安装 ...
- ☀【Node】处理文件上传
Node入门 √http://www.nodebeginner.org/index-zh-cn.html Node.js中所用的fs.renameSync出错:Error: EXDEV, cross- ...
- 【Node】node.js实现服务器的反向代理,解决跨域问题
跨域对于前端来说是一个老大难的问题,许多方法如jsonp.document.domain + iframe...都有或多或少的问题,一个最佳实践就是通过服务器nginx做反向代理,但奈何不懂相关知识, ...
- ☀【Node】处理POST请求
Node入门 √http://www.nodebeginner.org/index-zh-cn.html index.js var server = require("./server&qu ...
- -_-#【Node】Express 400 Error: ENOENT, open
Express 400 Error: ENOENT, open cd alleatisland, node app来启动
- 【node】记录项目的开始与完成——pipeline_kafka流式数据库管理项目
前言: 我始终坚信的一点是,学习的效果80%来自总结,甚至全部都是.总结的好处就是让你能翻出你的过往,指出其中的不足,看到未来的改进方法,好的总结更能让知识产生飞跃,所以在工作之余,部署项目之际,总结 ...
- 【node】使用nvm管理node版本
写在前面 nvm(nodejs version manager)是nodejs的管理工具,如果你想快速更新node版本,并且不覆盖之前的版本:或者想要在不同的node版本之间进行切换: 使用nvm来安 ...
随机推荐
- MarkDown Pad2的一些用法
一.标题 1.使用命令Ctrl+1 标题一 2.使用文字回车后,加上"-"号,再回车.就有如下的示例: 标题二 注意:减(-)号是用于最近的那一行文字变成标题. 二.背景 例如我要 ...
- JS中(function(){xxx})(); 这种写法是什么意思?
自执行匿名函数: 常见格式:(function() { /* code */ })(); 解释:包围函数(function(){})的第一对括号向脚本返回未命名的函数,随后一对空括号立即执行返回的未命 ...
- Apache + Tomcat + mod_jk实现集群服务及session共享
实现效果:用apache 分发请求到tomcat中的对应的项目 原理:
- ORACLE no1 存储过程插入更新表数据
CREATE OR REPLACE PROCEDURE sp_cust_main_data_yx(InStrDate IN VARCHAR2, ...
- Xcode 5.1 更新后插件不能用
打开目录 ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins 右击选择"显示包内容" 找到"Inf ...
- Android从服务端获取json解析显示在客户端上面
Android从服务端获取json解析显示在客户端上面 百度经验:jingyan.baidu.com 首先说一下Json数据的最基本的特点,Json数据是一系列的键值对的集合,和XML数据来比,Jso ...
- ssh命令:隧道代理+本地端口转发+远程端口转发
0.前言 nc是一个在网络连接两端的好工具,同时也是也个临时的端口转发的好工具.(永久的端口转发用什么?用iptables) ssh也是这方面的好工具,好处是加密可靠可复用在一端操作即可,代价 ...
- linux/win7下安装websphere application server
说明: 1.参考网址:http://www.ibm.com/developerworks/cn/aix/library/au-wasonlinux/ 2.在ibm官网上下载websphere appl ...
- Linux 进程编程
Linux通过维护者五个状态来调度进程的运行.这五个状态分别为:运行.可中断.不可中断.僵死.停止 . PID来标识不同的进程的,Linux中每一个进程都有一个唯一的进程号 . PCB块就是一个进程资 ...
- html doctype 作用
文档模式主要有以下两个作用: 1.告诉浏览器使用什么样的html或xhtml规范来解析html文档 2.对浏览器的渲染模式产生影响:不同的渲染模式会影响到浏览器对于 CSS 代码甚至 JavaScri ...