主页 > IT业界  > 

node-fs

node-fs

文章目录 一. 文件写入(1) 写入文件场景(2)异步写入-writeFile(3)同步写入-writeFileSync(4)追加写入-appendFile/appendFileSync/writeFile(5)流式写入-createWriteStream 二.文件读取(1) 文件读取应用场景(2) 异步读取-readFile(3) 同步读取-readFileSync(4) 流式读取-createReadStream(5)复制文件练习 三.文件移动和重命名-rename四.文件删除五.文件夹操作(1)创建文件夹-mkdir(2) 读取文件夹-readdir(3)删除文件夹-rmdir 六.查看资源状态-stat七.`__dirname`和`__filename`八.path

一. 文件写入 (1) 写入文件场景

下载文件

安装软件

保存程序日志

编辑器保存文件

视频录制

(2)异步写入-writeFile //1.fs.writeFile(file,data[,options], callback) /** * 参数说明: * 1. file文件名 * 2. data待写入的数据 * 3. options选项设置(可选) * 4. callback写入回调 */ function fun1(){ fs.writeFile('./写入的文本.txt','写入的文字',err=>{ if(err){ console.log(err) return } console.log('写入成功') }) } (3)同步写入-writeFileSync

参数与fs.writeFile大体一致, 只是没有callback参数

(4)追加写入-appendFile/appendFileSync/writeFile fs.appendFile(file,data[,options],callback) fs.appendFile('./写入的文本.txt','\n追加的文本',err=>{ if(err) return console.log('追加成功') }

使用writeFile

function fun3(){ fs.writeFile('./写入的文本.txt','追加的文本',{flag:'a'},err=>{ if(err) return console.log('writeFile追加成功') }) } (5)流式写入-createWriteStream

fs.createWriteStream(path[,options])

流式写入可以减少打开关闭文件的次数

流式写入适用于大文件写入或者频繁写入的场景,writeFile适用于写入频繁较低的场景

let ws = fs.createWriteStream('./流式写入.txt') ws.write('1\n') ws.write('2\n') ws.write('3\n') ws.write('4\n') ws.end() 二.文件读取 (1) 文件读取应用场景 电脑开机程序运行编辑器打开文件查看图片播放视频播放音乐Git查看日志上传文件查看聊天记录 (2) 异步读取-readFile //fs.readFile(path[,options],callback) let path = './写入的文本.txt' fs.readFile(path,(err,data) => { if(err) throw err console.log(data.toString()) }) (3) 同步读取-readFileSync //fs.readFileSync(path[,options]) let path = './写入的文本.txt' let data = fs.readFileSync(path) console.log(data.toString()) (4) 流式读取-createReadStream fs.createReadStream(path[, options]) let rs = fs.createReadStream('./写入的文本1.txt') //每次取出64KB数据后再执行一次data回调 rs.on('data', data=>{ console.log(data.toString()); console.log(data.length) }) //读取完成后, 执行end回调 rs.on('end', ()=>{ console.log('读取完成') }) (5)复制文件练习 const fs = require('fs') const process = require('process') /** * 复制测试.mp4到fs文件夹下 * 1. readFile: 异步读取 * 2. createReadStream: 流式读取 */ // 1.readFile-writeFile let readPath = '../测试.mp4' let writePath = './测试(1).mp4' let writePath2 = './测试(2).mp4' function fun1(){ // 读取 fs.readFile(readPath,(err,data)=>{ console.log('读取成功') // console.log(data) // 写入 fs.writeFile(writePath,data,err=>{ if(err) throw err console.log('写入成功') }) }) } // fun1() //2. createReadStream-createWriteStream function fun2(){ let rs = fs.createReadStream(readPath) let ws = fs.createWriteStream(writePath2) //2.1 rs.on('data', data=>{ // console.log(data.length) ws.write(data) // ws.end() //不能加这个,加了出错 }) rs.on('end',()=>{ console.log('读取完成') }) //2.2 // 管道流:rs.pipe(ws) } // fun2() /** * process: 获取代码运行占量 */ // fun1() //rss 20701184字节 19MB fun2() //rss 20635648 console.log(process.memoryUsage()) 三.文件移动和重命名-rename

在node中, 可以用rename和renameSync来移动或重命名文件或文件夹

fs.rename(oldPath, newPath, callBack)

oldPath 文件当前路径newPath: 文件新的路径callBack: 操作后的回调 const fs = require('fs') // 1.fs.rename 同步修改名字和文件移动 // 2.fs.renameSync 异步修改名字和文件移动 //1.fs.name(oldPath, newPath, callback) let oldPath = "./流式写入.txt" let newPath = "./流式写入1.txt" fs.rename(oldPath,newPath,err=>{ if(err) throw err console.log('修改') }) 四.文件删除

在node中可以使用unlink或unlinkSync来删除文件

fs.unlink(path, callback)

const fs = require('fs') /** * 1.unlink unlinkSync * 2.rm rmSync */ //1.fs.unlink(path,callback) // fs.unlink('./测试1',err=>{ // if(err) throw err // }) //2.fs.rm(path,callback) fs.rm('./测试2',err=>{ if(err) throw err }) 五.文件夹操作 (1)创建文件夹-mkdir

fs.mkdir(path[, options],callback)

异步创建文件夹 fs.mkdir('./page', err => { if (err) { throw err } else { console.log('创建成功') } }) 异步创建递归文件夹 fs.mkdir('./a/b/c',{recursive: true}, err => { if (err) { throw err } console.log('创建成功') }) (2) 读取文件夹-readdir

fs.readdir(path[, options],callback)

fs.readdir('./', (err,data) => { if (err) { throw err } else { console.log(data) } }) (3)删除文件夹-rmdir

fs.rmdir(path[,options],callback

/** * 只能删除空文件夹 */ fs.rmdir('./a', err => { if (err) { throw err } else { console.log('删除成功') } })

深度删除

fs.rmdir('./a',{recursive: true}, err => { if (err) { throw err } else { console.log('删除成功') } }) 六.查看资源状态-stat 异步: fs.stat(path[, options], callback)同步: fs.statSync(path[,options]) const fs = require('fs') fs.stat('./测试(2).mp4',(err,data)=>{ if(err) throw err console.log(data) console.log(data.isFile())//检测是否为文件 console.log(data.isDirectory()) //检测是否为文件夹 }) /** Stats { dev: 286136082, mode: 33206, nlink: 1, uid: 0, gid: 0, rdev: 0, blksize: 4096, ino: 1688849860562346, size: 15423418, //文件体积 blocks: 30128, atimeMs: 1678959494454.5403, mtimeMs: 1678959494454.5403, ctimeMs: 1678959494454.5403, birthtimeMs: 1678959448707.1306, //创建时间 atime: 2023-03-16T09:38:14.455Z, mtime: 2023-03-16T09:38:14.455Z, //最后修改时间 ctime: 2023-03-16T09:38:14.455Z, birthtime: 2023-03-16T09:37:28.707Z } */ 七.__dirname和__filename __dirname保存着当前文件所在目录的绝对路径, 可以使用__dirname与文件名拼接成绝对路径__filename表示当前正在执行的脚本的文件名. 它将输出文件所在位置的绝对路径 console.log(__dirname) //C:\Users\wang9\Desktop console.log(__filename) //C:\Users\wang9\Desktop\file.js 八.path path.resolve: 拼接规范的绝对路径path:sep: 获取操作系统的路径分隔符path.parse: 解析路径并返回对象path.basename:获取路径的基础名称path.dirname:获取路径的目录名path.extname:获取路径的扩展名
标签:

node-fs由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“node-fs