fs模块
实现与硬盘的交互,例如文件的创建、删除、重命名、移动,还有文件内容的写入、读取,以及文件夹的相关操作
写入操作
//异步
fs.writeFile('./test.txt', 'test', (err) => {
if (err) {
console.log('写入失败')
}
console.log('写入成功')
})
//同步
fs.writeFileSync('./test.txt','test')
//追加写入
fs.appendFile('./test.txt','test2',err=>{
if (err) {
console.log('写入失败')
}
console.log('写入成功')
})
//追加写入(同步)
fs.appendFileSync('./test.txt','\r\ntest2')
//流式写入(流式写入适合大文件写入或者频繁写入,writeFile适合写入频率较低的场景)
const ws = fs.createWriteStream('./test.txt')
ws.write('test1')
ws.write('test2')
ws.write('test3')
ws.close()
读取操作
const fs = require('fs')
//异步
fs.readFile('./test.txt', (err, data) => {
if (err) {
console.log('读取失败')
}
console.log(data) //buffer
console.log(data.toString())
})
//同步
let data = fs.readFileSync('./test.txt')
console.log(data.toString());
//流式读取
//创建读取流对象
const rs = fs.createReadStream('./test.txt')
//绑定data事件
rs.on('data',chunk=>{
console.log(chunk);
})
//end可选事件
rs.on('end',()=>{
console.log('读取完成');
})
文件复制
const fs = require('fs')
//方式一 readFile
let data = fs.readFileSync('./test.txt')
fs.writeFileSync('./test-2.txt',data)
//方式二 流式操作(所占资源更少)
const rs = fs.createReadStream('./test.txt')
const ws = fs.createWriteStream('./test.txt-3')
rs.on('data',chunk=>{
ws.write(chunk)
})
//方式三 读取流读完后交给写入流
rs.pipe(ws)
文件重命名和移动
const fs = require('fs')
//重命名
fs.rename('./test.txt', './test2.txt', (err) => {
if (err) {
console.log('操作失败')
return
}
console.log('操作成功')
})
//移动
fs.rename('./test.txt', '../node.js', (err) => {
if (err) {
console.log('操作失败')
return
}
console.log('操作成功')
})
文件删除
const fs = require('fs')
//法一
fs.unlink('./test.txt',err=>{
if(err){
console.log('删除失败');
return
}
console.log('删除成功');
})
//法二
fs.rm('./test.txt',err=>{
if(err){
console.log('删除失败');
return
}
console.log('删除成功');
})
文件夹操作
const fs = require('fs')
//创建文件夹 mk make dir directory
fs.mkdir('./html',err=>{
if(err){
console.log('创建失败');
return;
}
console.log('创建成功');
})
//递归创建
fs.mkdir('./a/b/c',{recursive:true},(err,data)=>{
if(err){
console.log('创建失败');
return;
}
console.log(data);
})
//读取文件夹
fs.readdir('../一键返回顶部',(err,data)=>{
if(err){
console.log('创建失败');
return;
}
console.log(data);
})
//删除文件夹 rm remove
fs.rmdir('./html',err=>{
if(err){
console.log('创建失败');
return;
}
console.log('创建成功');
})
//递归删除
fs.rm('./a',{recursive:true},err=>{
if(err){
console.log('创建失败');
return;
}
console.log('创建成功');
})
查看文件状态
const fs = require('fs')
//stat方法 status缩写
fs.stat('../水平垂直居中',(err,data)=>{
if(err){
console.log('操作失败');
return
}
console.log(data.isFile());
console.log(data.isDirectory());
})
path模块
const fs = require('fs')
const path = require('path')
//拼接规范的绝对路径
console.log(path.resolve(__dirname,'./test.txt'));