定义:node.js是一个开源的跨平台的js的运行环境。
作用:

  • 开发服务器应用;
  • 开发工具类应用例如webpack;
  • 开发桌面端应用:比如VScode。
    nodejs中不能使用window ,可以用grobal
    不能使用document,可以使用console.log和定时器;

buffer(缓冲器)

定义:一个类似与数组的对象,用来表示固定长度的字节,本质上是一段内存空间,用来处理二进制数据。
Buffer不需导入,是个全局对象,三种创建方式:

  1. alloc
let buf=Buffer.alloc(10) //创建了10字节的buffer
  1. allocUnsafe
//可能包含旧的内存数据,但速度快
let buf=Buffer.allocUnsafe(10)
  1. from
Buffer.form('hello')//会转成16进制

buffer转成字符串:tostring

Buffer.from([105,108,111,118,101,121,111,117])
console.log(buf3.toString()) //iloveyou

buffer溢出

let buf=Buffer.from('hello')//68 65 6c 6c 6f
buf[0]=361 //0001 0110 1001  二进制最高255,溢出后会把前4位舍去,最后留下0110 1001 = 69
console.log(buf) //69 65 6c 6c 6f

fs模块

作用:可以实现与硬盘的交互,比如文件、文件夹的创建、删除移动等,还能对文件内容进行写入和读取;

文件操作

1.文件写入和创建

文件写入场景,需要持久化保存数据时,比如:

  • 下载文件;
  • 安装软件;
  • 日志保存;
  • 编辑器保存文件;
  • 视频录制;

writeFile异步写入 新建或已有的某个文件并写入某些内容,异步执行
fs.writeFile(file,data,options,callback)
file:文件名;
data:写入的数据;
options:选项设置;(可选参数)
callback:回调函数;

fs.writeFile('./demo.js','demo',err=>{
    if(err){
      return console.log('失败');
    }
	console.log('成功');
})

writeFileSync同步写入
fs.writeFileSync(file,data)
appendFileSync追加写入 给某个文件追加写入某些内容,异步执行(参数与writeFile一样)
appendFileSync同步追加写入
createWriteStream写入流对象 持续写入,减少关闭文件次数

const ws = fs.createWriteStream('./book.txt')
//通过write写入内容
ws.write('1111')
ws.write('2222')
ws.write('3333')
ws.close();//关闭

2.文件读取

应用场景比如:
电脑开机;
运行程序;
查看图片;
编辑器打开文件;

readFile异步读取 读取某个文件内容,异步执行
fs.readFile(file,options,callback) 返回读取的内容是一个buffer,需要tostring
file:文件名;
options:选项设置;(可选参数)
callback:回调函数;

fs.readFile('./demo.js',err=>{
    if(err){
      return console.log('失败');
    }
	console.log('失败');
})

readFileSync同步读取
fs.readFileSync(file,data)
createReadStream流式读取 一块一块读取

const rs = fs.createWriteStream('./book.txt')
//通过data绑定事件 chunk 块
rs.on('data',chunk=>{
 console.log(chunk)  //chunk 读取的内容  64kb  65536字节
})
rs.on('end',()=>{  //可以不写
  console.log('读取完成')
})

3.复制文件

简单方式:rs.pipe(ws)
普通方式:

const ws =fs.createWriteStream('./mp4/倒数1.mp3');
const rs = fs.createReadStream('./mp4/倒数.mp3') 
rs.on('data',chunk=>{
    ws.write(chunk)
})
rs.on('end',()=>{
    console.log(process.memoryUsag);
})

process.memoryUsage() 可以查看进程所占内存空间

4.删除文件

  1. fs.unlink(file,err=>{})
    fs.unlinkSync(file,err=>{})
  2. fs.rm(file,err=>{}) //node14.4以上
    fs.rmSync(file,err=>{})

5.文件重命名

fs.rename(oldUrl,newUrl,err=>{})

文件夹操作

1.创建文件夹

fs.mkdir(dirname,err=>{}) 创建demo文件夹

fs.mkdir('demo',err=>{})

fs.mkdir(dirname,{recursive:true},err=>{}) 创建多层级的文件夹

fs.mkdir('a/b/demo',{recursive:true},err=>{})

2.读取文件夹

fs.readdir(dir,(err,data)=>{}) data:读取到的文件中的文件名称数组

3.删除文件夹

fs.rmdir(dir,err=>{}) 删除没有子文件的空文件夹
fs.rmdir(dir,{recursive:true},err=>{}) 删除多层级的文件夹 不建议使用,该方法将被删除
fs.rm(dir,{recursive:true},err=>{}) 删除多层级的文件夹 推荐

4.查看资源信息

fs.stat(file,(err,data)=>{}) //data返回资源信息,有一下方法可以查看资源是文件还是文件夹

data.isFile() //查看该资源是否是一个文件
data.isDirectory() //查看该资源是否是一个文件夹

posted on 2023-06-13 14:10  秃头大宝贝  阅读(17)  评论(0)    收藏  举报