Buffer缓冲区
通俗点来说就是一个暂时储存用户发送的请求信息,和服务器未发现响应之前的响应信息,内部已二进制存储但是以十六进制显示。
fs文件系统(File System)
就是node通过引用fs模块对电脑里面的文件可以进行一系列增删改的操作等。如果笔记有荣幸被网上的兄弟看到,那这里把模块的引入讲一下,就是 cosnt fs = require('fs')
,node引入文件就是这样require后面跟需要引入的模块名字,如果是引入自己创建的模块,那填写的就是相对路径,npm下载的模块也是只要填名字就可以了。fs里面的方法分为同步和异步,同步会卡主程序的运行,等我这步执行完了才能执行后面,异步就是程序先按顺序执行下去,等我fs这步执行完了,再执行一个回调函数
同步
const fs = require('fs')
//引入fs模块
const fa = fs.openSync('hello.txt','w')
//同步打开hello.txt文件,这里写相对路径,第二个位置写权限
fs.writeSync(fa,'我giaoi1',20)
//同步写入文件,第一个是文件标识,第二个是文件内容,第三个是内容前几个空格
fs.closeSync(fa)
//同步关闭文件
异步
const fs = require('fs')
//异步步骤是一样的但是每个api执行完都要有一个回调函数,函数第一个参数都是错误,接着在回调函数中进行下一步操作
fs.open('hello.txt','w',(err,fd)=>{
//这里第二个参数返回的是文件标识符
if(!err){
fs.write(fd,'异步写入一些东西',(err)=>{
if(!err){
fs.close(fd,(err)=>{
if(!err){
console.log('文件关闭成功');
}
})
}
})
}
})
简单写入
//异步
const fs =require('fs')
fs.writeFile('hello.txt','简单写入',(err)=>{
if(!err){
console.log('写入完成');
}
})
//同步
fs.writeFileSync('hello.txt','简单写入同步')
文件写入默认一般是直接覆盖原有的内容,需要在参数最后改变打开状态
fs.writeFileSync('hello.txt','简单写入同步追加',{flag:'a'})
流式文件写入
可以分多次写入文件,而不用像传统一样一次性写入所有
const fs = require('fs')
const w = fs.createWriteStream('hello.txt')
w.write('wogiao')
w.write('wogiao')
w.write('wogiao')
w.write('wogiao')
w.end()
简单文件读取
只能读取出buffer的形式是因为读取的文件样式是多种多样的,如果要查看字符串文件的内容可以用toString的方法转化为字符串,异步的方法是将数据返回到回调函数的第二个参数中,同步则是以返回值的形式返回
const fs = require('fs')
fs.readFile('wife.jpg',(err,data)=>{
if(!err){
console.log(data);
fs.writeFile('hello.txt',data,(err)=>{
if(!err){
console.log('写入图片成功');
}
})
}
})
流式文件读取
这里直接流式文件读取并且通过建立一条管子,一边读取数据一边往另一个文件写入数据
const fs = require('fs')
const ws = fs.createWriteStream('hello.txt')
const rs = fs.createReadStream('wife.jpg')
rs.pipe(ws)
fs的其他方法
const bol = fs.existsSync(path)
//检查一个文件存不存在,异步的方法已经废除,因为查看文件本来就是一个很快的事情没必要用异步,返回一个Boolean
const state = fs.statSync(path)
//返回一个状态信息对象,里面有文件的大小,创建时间等
fs.stat(path,(err,state)=>{
})
//将状态信息对象返回到第二个参数中
//返回的对象还包含很多方法,例如:state.isFile() //是否是一个文件
// state.isDirectory //是否是一个文件夹或者目录
fs.unlink(path,callback)
fs.unlinkSync(path)
//直接删除文件
fs.readdir(path,(err,files)=>{})
//fiels是一个数组,里面是该目录下的所有文件
fs.readdirSync(path)
//读取目录的目录结构
fs.truncate(path,length)
//截取文件,截取该文件前面固定length
fs.truncate(path,length)
fs.mkdir(path,callback)
fs.mkdirSync(path)
//创建一个文件夹
fs.rmdir(path,callback)
fs.rmdirSync(path)
//创建一个文件夹
fs.rename(oldpath,newpath,callback)
fs.renameSync(oldpath,newpath)
//重命名文件
fs.watchFile(path[,options],listener)
fs.watchFile(path[,options],(curr,prev)=>{
//接受两个参数,一个是当前文件状态,一个是修改前文件的状态,这两个参数都是stats对象,也有size,isFile()等
})
//lisener是一个回调函数,等监听的文件发生变化的时候执行
//它其实是一个定时机制,每间隔一段时间就会去检查文件是否发生变化
//option里面可以设置一个interval时间间隔,一般option都是一个对象