fs file system 文件系统
一。写入文件
1.导入 fs 模块
const fs = require('fs');
2.写入文件
fs.wirteFile('./文件.txt','文件写入',err => {
if(err){
console.log('写入失败');
return;
}
console.log('写入成功');
});
二。同步与异步
同步执行 writeFileSync('./data.txt','test');
三。追加写入
fs.appendFile('./文件.txt','追加', err =>{
console.log('写入失败');
return;
}
console.log('追加成功');
})
//同步使用 fs.appendFileSync('./文件.txt','追加')
四。文件流式写入
const ws =fs.createWriteStream('./流式写入.txt');
ws.write('写入内容1');
ws.write('写入内容2');
ws.write('写入内容3');
ws.write('写入内容4');
ws.end();
五。文件写入应用场景 1.下载文件 2.程序日志 3.视频录制
六。文件读取
fs.readFile('./文件.txt',(err,data) =>{
if(err){
console.log('读取失败')
return;
}
console.log('data');
})
//流式读取
const rs = fs.createReadStream('./文件.txt')
rs.on('data',chunk =>{
console.log(chunk.length);// 按块读取
})
re.on('end',()=>{
console.log('读取完成‘);
})
七。文件复制
let data =fs.readFileSync('./文件.txt');
fs.writeFileSync('./复制.txt',data);
//第二种方式 流式写入 更节省内存
const rs = fs.createReadStream('./wenjian.txt');
const ws = fs.createWriteStream('./流式复制.txt');
rs.on('data', chunck =>{
ws.write(chunck);
});
rs.on('end',()=>{
console.log('流式操作更省空间')
});
//第三种 rs.pipe(ws);
八。文件重命名与移动
fs.rename('./文件.txt','./新路径.txt',err=>{
if(err){
console.log('写入失败');
return;
}
console.log('写入成功')
})
//移动也是使用 rename 方法,只是路径改变
九。文件删除
fs.unlink('./文件.txt‘, err =>{
if(err){
console.log('删除失败');
return;
}
console.log('删除成功');
})
//rm 方法
fs.rm('./文件.txt', err=>{
if(err){
console.log('删除失败');
return;
}
console.log('删除成功');
})
十。文件夹操作
fs.mkdir('./文件夹',err=>{
if(err){
console.log('创建失败');
return;
}
console.log('创建成功');
})
//递归创建
fs.mkdir('./文件夹',{recursie: true},err=>{
if(err){
console.log('创建失败');
return;
}
console.log('创建成功');
})
//读取文件夹
fs.readdir('./文件夹',err=>{
if(err){
console.log('读取失败');
return;
}
console.log('读取成功');
})
//删除文件夹
fs.rmdir('./文件夹',err=>{
if(err){
console.log('删除失败');
return;
}
console.log('删除成功');
})
//递归删除 建议使用rm 递归删除
fs.rmdir('./文件夹',{recursive: true},err=>{
if(err){
console.log('删除失败');
return;
}
console.log('删除成功');
})
fs.rmdir('./文件夹',{recursive: true},err=>{
if(err){
console.log('删除失败');
return;
}
console.log('删除成功');
})
十一。资源状态
//stat 方法 status 缩写 状态
fs.stat('./文件.txt',(err,data) =>{
if(err){
console.log('操作失败');
return;
}
console.log(data.isFile()); //文件
console.log(data.isDirectory()); //文件夹
})
十二。路径问题
//全局变量,文件所在目录的绝对路径
console.log(__dirname);
fs.writeFileSync(__dirname+ './wenjian.txt',err=>{
if(err){
console.log('写入失败');
return;
}
console.log('写入成功');
})
//path
const path =require('path');
console.log(path.resolve(__dirname,'./文件.txt'))