node.js -fs模块

52 阅读2分钟

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()); //文件夹
})

十二。路径问题

image.png

//全局变量,文件所在目录的绝对路径
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'))