const fs = require('fs')
// 1:文件写入
// fs.writeFile也可以变为文件插入操作的api,在第三个参数位置加{flag:'a'}
// fs.writeFile('./testFs.txt','writeFile对于js主线程来说是一个异步的过程',(msg)=>{
// //成功msg返回null,失败msg返回错误信息
// console.log(msg)
// })
// console.log('此时我这里的console.log先打印')
//writeFile,writeFileSync会直接覆盖文件
// fs.writeFileSync('./testFs.txt','writeFileSync对于js主线程来说是一个同步的过程')
// console.log('因为此时对应js来说,是一个同步的过程,这里的console.log慢打印')
// 2:文件插入
//文件插入操作(异步)
// fs.appendFile('./testFs.txt',',这句话是通过appendFile这个API插入进来的',err=>{
// if(err){
// console.log('文字追加失败')
// return false
// }
// console.log('文字追加成功')
// })
// 文件插入操作(同步)\r\n实现换行
// fs.appendFileSync('./testFs.txt',',\r\n这段话是通过appendFileSync这个API插入进来的')
// 3:文件流式写入
//createWiteStream-文件流式写入
//程序打开是需要消耗资源的,流式写入可以减少打开或关闭的次数,相当于打电话,一直通话的模式
//let ws = fs.createWriteStream('./testFs.txt')//创建通道,可以持续写入
//持续输入
// ws.write('锄禾日当午\r\n')
// ws.write('汗滴禾下土\r\n')
// ws.write('谁知盘中餐\r\n')
// ws.write('粒粒皆辛苦\r\n')
//关闭通道
// ws.end()
//4:文件读取(一次读全部)
//文件读取(异步)
// fs.readFile('./testFs.txt',(err,data)=>{
// if(err){
// console.log('文件读取异常',err)
// return false
// }
// //data是Buffer格式,可以用toString()以UTF-8形式读取转换出来
// console.log(data.toString())
// })
//文件读取(同步)
// let data = fs.readFileSync('./testFs.txt')
// console.log(data.toString())
// 5.文件流式读取(一块块读)
// let rs = fs.createReadStream('./testFs.txt')
// //绑定data事件(一定)
// rs.on('data',chunk=>{//chuck:块儿,大块儿
// console.log(chunk.length)//chunk大小官方文档已定好,最大65546字节 => 64KB数据量
// })
// //绑定end事件(可选)
// rs.on('end',()=>{
// console.log('读取完成')
// })
// 6.文件重命名/移动
// fs.rename('./testFs.txt','studyFs.txt',err=>{
// if(err){
// console.log('重命名失败')
// return false
// }
// console.log('重命名成功')
// })
// fs.rename('./testFs.txt','././studyFs.txt',err=>{
// if(err){
// console.log('移动失败')
// return false
// }
// console.log('移动成功')
// })
// 7.删除文件(unlink/rm都可以,只不过rm这个方法得在node14.4及以上才有)
// fs.unlink('./studyFs.txt',err=>{
// if(err){
// console.log('删除失败')
// return false
// }
// console.log('删除成功')
// })
// 8.文件夹操作
// fs.mkdir('../node.js学习/创建文件夹',err=>{
// if(err){
// console.log(err)
// return
// }
// console.log('创建成功')
// })
//递归创建(a,b都没有的情况下,直接创建c,需要加个参数 recursive)
// fs.mkdir('./a/b/c',{recursive:true},err=>{
// if(err){
// console.log(err)
// return
// }
// console.log('创建成功')
// })
//读取文件夹
// fs.readdir('../node.js学习',(err,data)=>{
// if(err){
// console.log(err)
// return
// }
// console.log('读取成功',data)
// })
//删除文件夹(同理递归删除的话,加一个参数{recursive:true},但递归删除的不建议用rmdir,跟建议直接用rm)
// fs.rmdir('./创建文件夹',err=>{
// if(err){
// console.log(err)
// return
// }
// console.log('删除成功')
// })
// 9.查看资源状态
// fs.stat('./2.fs.js',(err,data)=>{
// if(err){
// console.log(err)
// return
// }
// console.log(data.isFile())//查看资源是否是文件
// console.log(data.isDirectory())//查看资源是否是文件夹
// })
// 10.fs相对路路径参照物:命令行的工作目录(就是那个 ./ 所在的那个目录)
// 绝对路径,更稳妥些,但绝对路径太长,可用__dirname这个'全局变量',保存的是:所在文件的所在目录的绝对路径
// console.log(__dirname)
// fs.appendFileSync(__dirname+'/index.html','测试')
//练习-批量重命名
let dir = fs.readdirSync('./code')
dir.forEach(item=>{
let data = item.split('-')
let [num,name] = data
if(+num<10){
num='0'+num
}
//创建新的文件名
let newName = num+'-'+name
//重命名
fs.renameSync(`./code/${item}`,`./code/${newName}`)
})
node.js fs模块学习
于 2025-02-16 14:06:07 首次发布

1171

被折叠的 条评论
为什么被折叠?



