🧑🏻‍💻 博世

学习笔记

fs模块

导入模块

 const fs= require('fs');
        

写入文件

fs.writeFile('./座右铭.txt', '三人行,必有我师焉', err => {

        

同步写入文件

 fs.writeFileSync('./座右铭.txt', 'test');//同步写入文件,性能较差,顺序执行
        

###//调用方法appendFile,写入文件

fs.appendFile('./座右铭.txt', '\n学而时习之,不亦说乎', err => {
            if (err) {
                 console.log('写入文件失败', err);
                return;
            }
            console.log('写入文件成功');
         });
         console.log('程序执行结束');

        

异步读取

fs.readFile('./观书有感.txt',(err,data)=>{
            if(err){
                console.log('读取文件失败'); 
                return;   
            }
            console.log('读取文件成功-----');    
            console.log(data.toString());
        });

        

同步读取

const data = fs.readFileSync('./观书有感.txt');
        console.log('同步读取文件成功-----');
        console.log(data.toString()); 
        

文件流式读取,适合大文件的读取,每次读取文件的一部分内容,直到读取完成

const fs = require('fs');
        const rs = fs.createReadStream('1.mp3');

        rs.on('data', chunk=>{
            console.log(chunk.length);//65536字节,64kb

        });
        rs.on('end',()=>{
            console.log('读取完成');
        });
        rs.on('error', err=>{
            console.log('读取文件失败', err);
        });
        console.log('程序执行结束');

        

文件复制

读取一个文件的全部内容,然后写入到另一个文件中去,适合小文件的复制,

const fs = require('fs');
        const process = require('process'); 
        let data = fs.readFileSync('1.mp3');
        fs.writeFileSync('1-复制.mp3',data);
        console.log(process.memoryUsage());  35.9921875
        console.log('文件复制完成');   
        

大文件不适合这种方式复制,大文件复制,适合使用流的方式复制, 流的方式复制大文件

const rs = fs.createReadStream('1.mp3');
        const ws = fs.createWriteStream('1-复制-流.mp3');   
        rs.on('data', chunk=>{
            ws.write(chunk);
        });
        rs.on('end',()=>{

            console.log(process.memoryUsage());  //38.8203125
         }); 
        rs.pipe(ws);  //管道流的方式复制文件
        rs.on('end',()=>{
             console.log(process.memoryUsage());  //8.9140625
        });
        

文件夹重命名

const fs=require('fs'); 
        fs.rename('1-复-流.mp3','1-重命名.mp3',err=>{
            if(err){
                console.log('文件重命名失败');
                return;
            }
            console.log('文件重命名成功');
        }
        );
        

移动文件

fs.rename('1-重命名.mp3','./资料/1.mp3',err=>{
            if(err){
                console.log('文件移动失败');
                return;
            }   
            console.log('文件移动成功');
        }
        );  
        

文件删除

const fs =require('fs');
        fs.unlink('1-复制.mp3', (err) => {
            if (err) {
                console.error('失败:', err);
            } else {
                console.log('文件删除成功');
            }       
        });
        fs.rmdir('test', (err) => {
            if (err) {
                console.error('失败:', err);    
            } else {
                console.log('目录删除成功');
            }   
        });
        fs.rmSync('test', { recursive: true, force: true });
        console.log('目录删除成功');
        

新建文件夹:

const fs= require('fs');
        fs.mkdir('test', (err) => {
            if (err) {
                console.log('创建文件夹失败');  
            } else {
                console.log('创建文件夹成功');  
            }   
        }); 
        

同步新建文件夹:

fs.mkdirSync('9-新建文件夹-同步');   
        console.log('同步创建文件夹成功');  
        

#### 递归新建文件夹:

fs.mkdir('test/a/b/c',{recursive:true}, (err) => {
            if (err) {
                console.log('创建文件夹失败');  
            } else {
                console.log('创建文件夹成功');  
            }   
        }); 
        

#### 流失写入文件:write方法,适合写入频次较多的场景,建立通道,直到写入完成后关闭通道。,也适合大文件的写入

const ws = fs.createWriteStream('./test/a/b/c/观书有感.txt');

        ws.write('半亩方塘一鉴开,\n');
        ws.write('天光云影共徘徊。\n');
        ws.write('问渠那得清如许?\n');
        ws.write('为有源头活水来。\n');
        //关闭写入流
        ws.on('finish',()=>{
            console.log('写入完成');
        });
        ws.on('error', err=>{
            console.log('写入失败', err);
        }); 
        ws.close();   
        console.log('程序执行结束');
        

查看文件状态

const fs=require('fs');
        fs.stat('test/b/c/观书有感.txt',(err,stats)=>{
            if(err){
                console.log('获取状态失败',err);    
            }else{
                console.log('获取状态成功');
                console.log('最后修改时间:',stats);  
                // console.log('是否是文件',stats.isFile());  
                // console.log('是否是文件夹',stats.isDirectory());  
                // console.log('文件大小',stats.size); 
                // console.log('创建时间',stats.birthtime);
                // console.log('最后修改时间',stats.mtime);  
            }    
        });