Bufffer(缓冲区)
Buffer的结构和数组很像,操作的方法也和数组类似
数组中不能存储二进制的文件,而buffer就是专门存储二进制数据
使用buffer不需要引用模块,直接使用即可
在buffer中,存储的都是二进制数据,但是在显示时,都是以16进制的形式显示的
buffer中每一个元素的范围是从 00 - ff 0 - 255
00000000 - 11111111
计算机 一个0或者一个1,我们称为1位(bit)
8bit = 1byte(字节)
1024byte = 1kb
1024kb = 1mb
1024mb = 1gb
1026gb = 1tb
buffer中的一个元素,占用内存的一个字节
Buffer的大小一旦确定,则不能修改,Buffer实际上是对底层内存的直接操作
Buffer.from(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 只读的
w 可写的
-mode 设置文件的操作权限,一般不传
返回值:
该方法会返回一个文件的描述作为结果,我们可以通过改文件描述符来进行各种操作
2.向文件中写入内容
fs.writeSync(fd,string[,position[,encoding]])
- fd 文件的描述符,需要传递要写入的文件的描述符
- string 要写入的内容
- position 写入的起始位置
- encoding
3.保存并关闭文件
fs.closeSync(fd)
-fd 要关闭的文件描述符
异步文件写入
fs.open(path,flags[,model,callback])
-用来打开一个文件
异步调用的方法,结果都是通过回调函数的参数返回的
回调函数有两个参数:
err 错误对象,如果没有错误则为null
fd 文件的描述符
fs.write(fd,string[,position[,coding]],callback)
用来异步写入文件
fs.close(fd,callback)
用来关闭文件
简单文件写入
fs.writeFile(file,data[,options],callback)
fs.writeFileSync(file,data[,options])
file 要操作的文件的路径
data 要写入的数据
options 选项,可以对写入进行一些设置
callback 当写入完成以后执行的函数
flag
r只读 | w可写 | a追加
流式文件写入
fs.createWriteStream(path[,options])
可以用来创建一个可写流
path 文件路径
options 配置的参数
可以通过监听流的open和close事件来监听流的打开和关闭
on(事件字符串,回调函数)
可以为对象绑定一个事件
once(事件字符串,回调函数)
可以为对象绑定一个一次性的事件,该事件会在触发一次以后自动失效
简单文件读取
fs.readFile(path[,options],callback)
fs.readFileSync(path[,options])
path 要读取的文件的路径
options 读取的选项
callback 回调函数,通过回调函数将读取到的内容返回(err,data)
err 错误对象
data 读取到的数据,会返回一个Buffer
fs中的其他方法
fs.existsSync(path)
检查一个文件是否存在
fs.stat(path,callback)
fs.statSync(path)
获取文件的状态
他会给我们返回一个对象,这个对象中保存了当前对象状态的相关信息
fs.unlink(path,callback)
fs.unlinkSync(path)
删除文件
fs.readdir(path[,options],callback)
fs.readdirSync(path[,options])
读取一个目录的目录结构
fs.truncate(path,len,callback)
fs.truncateSync(path,len)
截断文件,将文件修改为指定大小
fs.mkdir(path[,mode],callback)
fs.mkdirSync(path,[,mode])
创建一个目录
fs.rmdir(path[,mode],callback)
fs.rmdirSync(path,[,mode])
删除一个目录
fs.rename(oldPath,newPath,callback)
fs.renameSync(oldPath,newPath)
对文件进行重命名
fs.watchFile(fileName[,options],listener)
监视文件的修改
参数:
fileName 要监视的文件,当文件发生变化时
options 配置选项
listener 回调函数,当文件发生变化时,回调函数会执行
在回调函数中有两个参数
curr 当前文文件啊
prev 修改文件的状态
这两个对象都是stats对象