四七、node学习笔记(2)
来源:互联网 发布:图解汉诺塔递归算法c 编辑:程序博客网 时间:2024/05/30 12:30
文件操作相关
二进制和编码以及字符串的关系
OSChina 开源中国
http://tool.oschina.net/
- 二进制数据
- 在计算机中,存储的都是 0 1 0 1 这样的数据
- 编码
- 编码就是 从 字符串 到 0101 数据之间的转换字典、
- ascii 只有一些 英文字符 26 个英文字母、键盘上的一些英文符号
- 为了计算机更快的在世界范围进行普及:所以各个国家制定了很多自己的编码
- 例如中国就制定了:gb2312 gbk
- 为了解决不同的国家或者不同语言的计算机能识别不同的编码:所以有了 utf-8 这个编码
- node中支持的编码类型
- ascii
- utf8
- utf16le
- ucs2
- base64
- binary
- hex
- 编码的转换
- 二进制到 字符串
- 字符串到二进制 toString(),toString() 默认编码类型就是 utf8
- iconv-lite 解决 node 中不支持的编码类型
npm install --save iconv-lite
- 将 字符串 按照 指定的编码类型 转换为 一个 二进制数据(也就是一个Buffer类型的对象)
- iconv.encode(字符串, 编码类型);
- 将 二进制数据 按照 指定的编码类型 转换为 字符串
- iconv.decode(二进制数据, 编码类型);
使用 path 操作路径
文件操作
同步和异步文件系统调用
同步操作就是 阻塞IO操作
- 阻塞IO会立即执行
- 然后以同步编程的方式接收返回值
- 对于同步IO必须使用 try-catch 来捕获异常
- 同步IO操作对于编程简简单方便
- 例如node中的的文件操作API,带 sync 的都是同步IO
异步操作就是 非阻塞IO操作
- 异步操作会先把这个任务添加到事件队列
- 异步调用必须通过 回调函数 的方式来接收 异步的返回结果
- 异步调用一般都是通过 回调函数中的第一个参数 err 对象来判定是否有错误
- 异步IO能提高代码的性能,但是不利于程序员的编程思维习惯
- 不带 sync 的都是异步IO
文件读写
- writeFile 写入文件
- appendFile 追加文件
- readFIle 读取文件
其它文件操作API
- stat 获取文件信息
- unlink 删除文件
- rename 重命名文件
- rename 移动文件
- access 验证路径是否存在
目录操作
- mkdir 创建目录
- ./a/b/c/d
- 思考:利用递归封装 mkdirs
- rmdir 删除一个空目录
- 自己思考:利用递归删除一个非空目录 方法名:rmdirs
- readdir 读取目录内容
- rename 重命名目录
fs-extra 第三方模块包
npm install –save fs-extra
监视文件
- watch
- watchFile
案例:markdown 文件转换器
监视一个md文件的变化,发生变化,读取md文件,拿到文件中的字符串。
将md字符串转换为 html 字符串(自己去网上搜索将markdown字符串转换为HTML字符串的包)
然后将转换过后的html字符串写入到一个html文件中。
案例:less 自动编译工具
- 先简单实现,将一个 less 文件编译成 css 文件
- 再实现,通过监视自动将 less 文件编程成 css 文件
- 最后实现,将这个程序做为一个命令行工具
文件流
流的本质上就是一种高效处理数据的一种方式而已。
文件读取流
文件写入流
利用文件流复制大文件
pipe 管道
阅读全文
0 0
- 四七、node学习笔记(2)
- Node学习笔记(四)
- node学习笔记(四)cookie和session
- python学习笔记(七):字符串(四)
- Java for Web学习笔记(七四):国际化i18n(2)Locale Resolver
- node---学习笔记2
- 隐马尔科夫学习七(四)
- 学习笔记(七)
- Node学习笔记(一)
- node学习笔记(一)
- node学习笔记(一)
- node学习笔记(三)
- node.js学习(四、redis安装)
- Nodejs学习笔记(四)与MySQL交互(felixge/node-mysql)
- Nodejs学习笔记(四)与MySQL交互(felixge/node-mysql)
- node.js学习(四)
- 《深入浅出Node.js》学习笔记——(四)异步编程
- Pro Android学习笔记(四七):Dialog(4):一些补充和思考
- Java基础1
- python制作yolov2目标检测标注数据集
- 2017-11-7
- CCF 201503-4 网络延时
- Verilog学习笔记(五)
- 四七、node学习笔记(2)
- 设计模式——桥接模式
- Beat the Spread! POJ
- volatile
- 一些 Linux 诞生大事件
- 堆
- 比特币的挖矿原理(POW算法)是什么?
- CF383C Propagating tree【线段树】
- 实验吧安全杂项--异性相吸