四七、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 自动编译工具

  1. 先简单实现,将一个 less 文件编译成 css 文件
  2. 再实现,通过监视自动将 less 文件编程成 css 文件
  3. 最后实现,将这个程序做为一个命令行工具

文件流

流的本质上就是一种高效处理数据的一种方式而已。

文件读取流

文件写入流

利用文件流复制大文件

pipe 管道

原创粉丝点击