【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来安 ...
随机推荐
- 关于ligerui 中 grid 表格的扩展搜索功能在远程数据加载时无法使用的解决办法
要想使用grid里的扩展搜索功能,除了要引用ligerui主要的js文件外,还必须引入下面的JS文件: 1.Source\demos\filter\ligerGrid.showFilter.js 2. ...
- Windows Server 2008 计划任务配置(任务计划程序)每分钟执行BAT
首先Windows Server 2008不同于其他服务器操作系统和Windows Server 2003有着很大的区别,计划任务的名称是“任务计划程序”不在控制面板里,而是在“管理工具”里. 由于服 ...
- Visual C++ 打印编程技术-打印基础知识
打印机介绍 1.打印术语 *: 1 英寸= 2.54 厘米(cm)= 25.4 毫米(mm) cpi (Characters Per Inch): 每英寸内所含的字符数,用来表示字符的大小.间距 cp ...
- 小改动,大作为——C# 4.0中的微小改动
1.可选参数和命名实参 可选参数和命名实参就如同一对好基友,因为它们经常一起使用. 1.1 可选参数 可选参数重在“可选”,即在调用方法时,该参数可以明确指定实参,也可以不指定.如下代码所示,下面代码 ...
- 销毁session
session运行在服务器是单用户,每个session都有一个唯一的sessionid 用法:session.setAttribute("userName", "张三丰& ...
- 项目报错-无法解析类型 XXXX.xx 从必需的 .class 文件间接引用了它
这个编译错误有几个原因 1.jdk版本问题 要是报错是某些java包里的东西那就可以肯定是jdk版本的问题, 比如无法解析类型java.lang.Object,无法解析类型java.lang.Char ...
- RD / RMDIR Command
Quote from: http://ss64.com/nt/rd.html RD Delete folder(s) Syntax RD pathname RD /S pathname RD /S / ...
- linux管理网络连接指令
ethtool eth0 查看 eth0对应网卡的设置 ethtool -i eth0 查看 eth0网卡的驱动信息 ethtool -S eth0 查看网卡的统计信息 ethtool -s eth ...
- MySQL分库分表备份脚本
MySQL分库备份脚本 #脚本详细内容 [root@db02 scripts]# cat /server/scripts/Store_backup.sh #!/bin/sh MYUSER=root M ...
- 一个供新手把玩的jQueryUI在线文档
最近整理了一份jQueryUI文档,方便以后学习和运用. 把玩地址