Node.js (二) 核心模块
缓冲区( Buffer )
Buffer 是 Node.js 中的一个全局对象,它是对 ECMAScript 中的 Uint8Array API 在 Node.js 中的实现
Buffer 代表内存中的一个独立的区域( V8 堆 外分配的内存空间 ),其大小是固定的,无法手动调整,通过 Node.js 中的 Buffer 对象,可以创建这样的一块内存区域,并可以对该区域中的二进制数据进行操作
静态方法:
Buffer.alloc()
创建一个指定大小的 buffer
语法:
1 | Buffer.alloc(size[, fill[, encoding]]) |
例:
1 | // 创建大小为 10 个字节( Byte )、且用 0x64 填充的 Buffer |
Buffer.from()
创建一个填充了指定字符串、数组或 buffer 的新 buffer
语法:
1 | /* 语法1 */ |
例:
1 | // 创建一个包含 [0x1, 0x2, 0x3] 的 Buffer |
Buffer.isBuffer(obj)
判断 obj 是否为 Buffer,返回 true / false
Buffer.concat()
将多个 buffer 拼接合并为一个 buffer
语法:
1 | Buffer.concat(list[, totalLength]) |
实例方法:
buf.fill()
向指定 buffer 中填充数据
语法:
1 | buf.fill(value[, offset[, end]][, encoding]) |
buf.write()
向指定 buffer 中写入数据
语法:
1 | buf.write(string[, offset[, length]][, encoding]) |
buf.toString()
将指定 buffer 中的数据解码为字符串
语法:
1 | buf.toString([encoding[, start[, end]]]) |
buf.slice()
从指定 buffer 中截取出一个新的 buffer
语法:
1 | buf.slice([start[, end]]) |
buf.indexOf()
搜索 buffer 中是否存在指定内容
语法:
1 | buf.indexOf(value[, offset][, encoding]) |
buf.copy()
将源 buffer 拷贝到目标 buffer 中
语法:
1 | buf.copy(target[, targetStart[, sourceStart[, sourceEnd]]]) |
手写
buf.split()
实例方法1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19/*
sep 要拆分的分隔符
*/
Buffer.prototype.split = function (sep) {
let len = Buffer.from(sep).length
let ret = []
let start = 0
let offset = 0
// 循环查找非 sep 的数据
while ((offset = this.indexOf(sep, start)) !== -1) {
ret.push(this.slice(start, offset))
start = offset + len
}
// 防护数据最后面是截取关键词的情况
ret.push(this.slice(start))
return ret
}
文件系统( fs )
fs 是 Node.js 中专门用来操作文件的模块,模块中所有方法都有同步和异步两种形式,同步文件操作会阻塞程序的执行,而异步文件操作不会,异步文件操作完成时,会通过回调函数将结果返回,且回调函数的第一个参数总是留给异常参数( exception )
fs.readFile()
读取文件,同步方法:fs.readFileSync()
语法:
1 | fs.readFile(path[, options], callback) |
fs.writeFile()
写入文件( 不保留文件内容 ),同步方法:fs.writeFileSync()
语法:
1 | fs.writeFile(file, data[, options], callback) |
fs.appendFile()
追加写入文件( 在原有内容后面添加新内容 ),同步方法:fs.appendFileSync()
语法:
1 | fs.appendFile(file, data[, options], callback) |
fs.copyFile()
拷贝文件,同步方法:fs.copyFileSync()
语法:
1 | fs.copyFile(src, dest, callback) |
fs.watchFile()
监听文件,同步方法:fs.watchFileSync()
语法:
1 | fs.watchFile(filename[, options], listener) |
fs.open()
打开文件,同步方法:fs.openSync()
语法:
1 | fs.open(path, flags, callback) |
fs.read()
读文件( 读取文件并写入到 buffer 中 )
语法:
1 | fs.read(fd, buffer, offset, length, position, callback) |
fs.write()
写文件( 读取 buffer 中数据并写入到文件中 )
语法:
1 | fs.write(fd, buffer[, offset[, length[, position]]], callback) |
fs.access()
判断文件或目录是否具有相应权限
语法:
1 | fs.access(path, callback) |
fs.stat()
获取文件目录信息
语法:
1 | fs.stat(path, callback) |
fs.mkdir()
创建目录
语法:
1 | fs.mkdir(path[, options], callback) |
fs.rmdir()
删除目录
语法:
1 | fs.rmdir(path[, options], callback) |
fs.readdir()
读取目录
语法:
1 | fs.readdir(path, callback) |
fs.unlink()
删除文件
语法:
1 | fs.unlink(path, callback) |
fs.createWriteStream()
创建文件写入流
语法:
1 | fs.createWriteStream(path) |
路径( path )
path.resolve()
将所有给定的 path 解析为一个规范的绝对路径
语法:
1 | path.resolve([...paths]) |
path.join()
使用操作系统特定的路径分隔符将所有给定的 path 连接为一个路径
语法:
1 | path.join([...paths]) |
path.sep
获取操作系统的路径分隔符
例子:
1 | path.sep // Linux 为 '/' Windows 为 '\' |
path.parse()
解析一个路径
语法:
1 | path.parse(path) |
URL( url )
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Timeicの博客!
评论