node笔记02
2017-07-14 本文已影响0人
8d2855a6c5d0
fs
fs模块对文件的几乎所有操作都有同步和异步两种形式
- 例如:readFile() 和 readFileSync()
- 区别:
- 同步调用会阻塞代码的执行,异步则不会
- 异步调用会将读取任务下达到任务队列,直到任务执行完成才会回调
- 异常处理方面,同步必须使用 try catch 方式,异步可以通过回调函数的第一个参数
缓冲区buffer
- 缓冲区就是内存中操作数据的容器
- 只是数据容器而已
- 通过缓冲区可以很方便的操作二进制数据
- 而且在大文件操作时必须有缓冲区
为什么要有缓冲区
- JS 是比较擅长处理字符串,但是早期的应用场景主要用于处理 HTML 文档,不会-
- 有太大篇幅的数据处理,也不会接触到二进制的数据。
- 而在 Node 中操作数据、网络通信是没办法完全以字符串的方式操作的,简单来说
- 所以在 Node 中引入了一个二进制的缓冲区的实现:Buffer
创建缓冲区
创建长度为4个字节的缓冲区
var buffer = new Buffer(4);
通过指定数组内容的方式创建
var buffer = new Buffer([00,01]);
通过指定编码的方式创建
var buffer = new Buffer('hello', 'utf8');
Node 默认支持的编码
Buffers 和 JavaScript 字符串对象之间转换时需要一个明确的编码方法。下面是字符串的不同编码。
- 'ascii' - 7位的 ASCII 数据。这种编码方式非常快,它会移除最高位内容。
- 'utf8' - 多字节编码 Unicode 字符。大部分网页和文档使用这类编码方式。
- 'utf16le' - 2个或4个字节, Little Endian (LE) 编码 Unicode 字符。编码范围 (U+10000 到 U+10FFFF) 。
- 'ucs2' - 'utf16le'的子集。
- 'base64' - Base64 字符编码。
- 'binary' - 仅使用每个字符的头8位将原始的二进制信息进行编码。在需使用 Buffer 的情况下,应该尽量避免使用这个已经过时的编码方式。这个编码方式将会在未来某个版本中弃用。
- 'hex' - 每个字节都采用 2 进制编码。
文件流
么是流?
-
文件流、网络流
-
任何数据的最根本
-
表现形式都是二进制的
-
文件流就是以面向对象的概念对文件数据进行的抽象
-
文件流定义了一些对文件数据的操作方式