node.js buffer知识 fs 对文件操作以及一些常用函数
Buffer(缓冲区)
- Buffer的结构和数组很像,操作的方法也和数组类似
- 数组中不能存储二进制的文件,而buffer就是专门用来存储二进制数据
- 使用buffer不需要引入模块,直接使用即可
- 在buffer中存储的都是二进制数据,但是在显示时都是以16进制的形式显示
buffer中每一个元素的范围是从00 - ff 0 - 255
00000000 - 11111111
计算机 一个0 或一个1 我们称为1位(bit)
8bit = 1byte(字节)
1024byte = 1kb
1024kb = 1mb
1024mb = 1gb
1024gb = 1tb
buffer中的一个元素,占用内存的一个字节
buffer 构造函数都不推荐用 已经弃用
- Buffer的大小一旦确定,则不能修改,Buffer实际上是对底层内存的直接操作
Buffer.form(str) 将一个字符串转换为buffer
Buffer.alloc(size) 创建一个指定大小的 Buffer
Buffer.allocUnsafe(size); 创建一个指定大小的Buffer 但是含数据
buf.toString()将缓冲区中的数据转换为字符串
文件系统( File System)
文件系统简单来说就是通过node来操作系统中的文件
使用文件系统 需要先引入 fs模块 fs是核心模块 不需要下载
文件的写入
1 打开
fs.openSync(path[, flags, mode])
path 要打开文件的路径
flags 打开文件要做操作的类型 默认 r
r 只读
w 可写
mode 设置文件的操作权限 一般不传
返回值
返回一个文件的描述符作为结果 可以通过描述符对文件进行各种操作
2 写入
fs.writeSync(fd, string[, position[, encoding]])
fd 文件的描述符,需要传递要写入的文件的描述符
string 要写入的内容
position 写入的起始位置
encoding 写入的编码 默认 utf-8
3 关闭
fs.closeSync(fd)
fd 要关闭的文件的描述符
异步文件写入
fs.open(path[, flags[, mode]], callback)
打开一个文件
异步调用的方法 结果都通过回调函数的参数返回
回调函数的两个参数
err 错误对象 没有错误为 null
fd 文件的描述符
fs.write(fd, string[, position[, encoding]], callback)
异步写入一个文件
fs.close(fd, callback)
关闭文件
简单文件写入
fs.writeFile(file, data[, options], callback)
fs.writeFileSync(file, data[, options])
- file 要操作的文件的路径
- data 要写入的数据
- options 选项,可以对写入进行一些设置 object
- callback 当写入完成以后执行的函数
flag
r 只读
w 可写
a 追加
流式文件写入
同步、异步、简单文件的写入都不适合大文件的写入、性能较差、容易导致内存溢出
创建一个可写流
fs.createWriteStream(path[, options])
可以用来创建一个可写流
path 文件路径
options 配置参数
可以通过监听流的open 和 close 事件 来监听流的打开和关闭
on(事件字符串,回调函数)
可以为对象绑定一个事件
once(事件字符串,回调函数)
可以为对象绑定一个一次性的事件,该事件将在触发一次以后自动失效
文件读取
1 同步文件读取
2 异步文件读取
3 简单文件读取
fs.readFile(path[, options], callback)
fs.readFileSync(path[, options])
path 要读取的文件的路径
options 读取的选项
callback 回调函数,通过回调函数将读取到的内容返回
4 流式文件读取
也适用于一些较大文件 分多次将文件读取的内存中