一、Buffer
buffer是nodejs环境中的==缓冲区空间==。存储是二进制,显示是16进制。一个buffer空间就是一个字节空间,一个字节空间是8bit(8位,一个0或者一个1是一位 ;8bit = 1byte(字节);1024byte = 1kb;1024kb = 1mb;1024mb = 1gb;1024gb = 1tb)
创建 let c=Buffer.alloc(20) console.log(c) (表示一个长度为==20==的buffer空间) Buffer.alloc(30,bf)可以传递两个参数,一个参数是长度,第二个是参数数据;用bf的30个数据填充新的
空间中只能存储2进制,所以65会转为2进制存储,因为二进制的数据比较长,在展示数据时,buffer会将二进制格式的数据转为十六进制显示 c[0]=65 >展示出来的是41 ==一个字节所能存放的最大数据时255(ff 对应的2进制数据是11111111)如果大于255,那么就减去255,剩余的数据展示== (c.toString()表示把保存的数据转为字符串)
注意:在nodejs环境中,一个汉字占3个字节,换行符占两个字节
二、文件系统
两种形式:同步文件系统与异步文件系统
同步文件:多文件读取时,需要上一个文件读取完毕才进行下一个文件读取,所以==异步==的更佳!
导入文件系统模块,它是系统模块 const fs=require('fs')
文件读:打开文件 fs.openSync('./date/demo1/txt','r') (==采用的是同步方式==) 此方法要穿两个参数,文件路径和操作类型(补充:系统模块---------path path中有一个方法join作路径拼接的 let url=path.join(__dirname,'a','b','c','d') 因为不同操作系统的路径分隔符不同,所以需要用到path.join "r"表示只读,“w”表示写入)
读取文件:let bf=Buffer.alloc(20) fs.readSync(fd,bf)(==采用同步方式==) 返回的值是读取的长度(字节的数量),==fd是文件标识==
关闭文件:fs.closeSync(fd) ==如果不关闭,数据会被攻击到==
文件写:
导入 const fs=require('fs')
let fd=fs.openSync('./data/demo2.txt','w')
fs.writeSync(fd,'abcdefg')
关闭文件 s.closeSync(fd) (==对比上面的文件读,打开文件和读取文件不同==)
异步文件:
导入文件系统模块,它是系统模块 const fs=require('fs')
打开文件,==读取==和关闭 fs.open(’./data/demo1.txt‘,(err,fd)=>{if(!err){fs.read(read(fd,(err,num,bf(表示返回参数,就是后面的bf.toString))=>{if(!err){console.log(bf.toString(); fs.close(fd,(err)=>{if(!err){console.log('关闭成功!')}}))}}))}} ) ==打开,读取和关闭,分别是需要err和一个回调函数,回调函数的参数不同==
打开文件,==写入==文件和关闭:fs.open('./data/demo2.txt',(err,fd)=>{if(!err){let buffer=Buffer.alloc(20) fs.write(fd,buffer,(err,num,bf)=>{if(!err){console.log(bf.toString(); fs.close(fd,(err){console.log('关闭成功!')})}})}})
简单文件的读取和写入
一、读取:1.导入fs模块:const fs=require('fs') 2.读取文件 fs.readFile('./data/demo1.txt',(err,bf(或者str))=>{if(!err){console.log(bf(或者str).toString())}}) (==readFile==会帮助你自己打开和关闭) ==如果文件中有问题,需要在url后面加入'utf8'(字符换,也可以是对象),一般不用加,但是如果读取乱码就要加==
二、写入:fs.writeFile('./data/demo4.txt',bf.toString(),(err)=>{if(!err){console.log('成功!')}}) ==如果在读取里面再写入,相当于复制,不是单纯的写入了==