fs模块(系统内置模块 主要用来操作文件)

注意: 基本上所有方法都有异步和同步,基本上同步的方法 都是在异步方法后面加上 Sync

常见的文件的基本操作:

    
        <script>
         //前提: 要先引入fs模块
         var fs = require('fs');
       </script>
    

01) 读取文件(内容)

    
        <script>
        a) 异步读取
         fs.readFile('要读取的文件的路径', function (err, data) {
         // 判断 如果有错 打印错误
         if (err) {
             console.log('读取错误!')
          }
         // 否则 打印读取到的数据
             console.log(data);
         })

       b) 同步读取
        // 直接读取 返回读取的结果 保存在data变量里面
        var data = fs.readFileSync('被读取的文件的路径');
       </script>


       <script>
       var fs = require('fs');    
       // 异步读取
       /*
      fs.readFile('./readme.txt', function (err, data) {
            // 判断 如果有错 抛出错误
          if (err) {
              throw err;
          } 
          // 如果没有错 打印读取到的文件数据
          console.log('读取结果:', data.toString());
      })
      */ 

       // console.log('看一下阻塞不?')

       // 同步读取 (直接返回读取的结果 保存在变量data里面)
       var data = fs.readFileSync('./readme.txt');
       console.log('读取结果:', data.toString());
       console.log('看一下阻塞不?')
       </script>
    

02)异步读取文件信息

    
        <script>
        // 引入fs模块
        var fs = require('fs');
      
      
        /*
            // 异步读取文件信息
            fs.stat('./', function (err, stats) {
              // 如果有错 抛出错误
                if (err) {
                    throw err;
                }
                // 否则 打印读取的文件信息
                // console.log(stats);
                console.log('文件的大小:', stats.size);
                console.log('是否是文件:', stats.isFile());
                console.log('是否是目录(文件夹):', stats.isDirectory());
            })
      
        */ 
      
        // 同步读取 直接返回读取结果 保存在data里面
        var data = fs.statSync('./readme.txt');
        console.log(data);
       </script>
    

03-fs写文件

    
        <script>
        // 引入fs模块
        var fs = require('fs');

       // 往writeme.txt文件 写入一些内容
       fs.writeFile('./writeme.txt', '我是写入的内容', function (err) {
        // 判断 如果有错 抛出错误 否则 打印写入成功
       if (err) {
            throw err;
       } 
        console.log('写入文件成功!')
       })
       </script>
    

04-先读取再写入

    
        <script>
        // 先引入fs模块
        var fs = require('fs');
        
        // 先读取文件
        fs.readFile('./readme.txt', function (err, data) {
        // 判断 如果有错 抛出错误 否则 把读取的结果保存在一个变量里面
        if (err) {
        throw err;
        }
        // 定义一个变量 保存读取结果
        var readRst = data;
        
        // 把读取的结果 写入writeme.txt文件里面
        fs.writeFile('./writeme.txt', readRst, function (err) {
        // 如果有错 抛出错误
        if (err) {
        throw err;
        }
        console.log('写入成功!')
        })
        })
        </script>
    

05-删除文件

    
        <script>
        // 引入fs模块
        var fs = require('fs');
        
        // 删除文件
        fs.unlink('./writeme.txt', function (err) {
        // 判断 如果有错 抛出错误 否则 打印删除成功
        if (err) {
        throw err;
        }
        
        console.log('删除成功!')
        
        })
        </script>
    

06-读取文件目录中的所有文件

    
        <script>
        // 引入fs模块
        var fs = require('fs');
        
        // 读取文件目录(文件夹)中的所有文件
        fs.readdir('../', function (err, files) {
        // 如果有错 抛出错误
        if (err) {
        throw err;
        }
        // 否则 打印读取的结果 (读取当前目录的结果 会被放入一个数组里面)
        console.log(files);
        })
        </script>
    

07-创建文件夹&删除空文件夹

    
        <script>
        // 引入fs模块
        var fs = require('fs');
        /*
        // 创建文件夹
        fs.mkdir('./cc', function (err) {
        // 如果有错 抛出错误
        if (err) {
        throw err;
        }
        // 否则 打印创建文件夹成功
        console.log('创建文件夹成功')
        })
        */
        // 删除空的文件夹
        fs.rmdir('./cc', function (err) {
        if (err) {
        throw err;
        } else {
        console.log('删除空文件夹成功')
        }
        })
        </script>
    

08-递归删除非空文件夹

    
        <script>
        // 引入fs模块
        var fs = require('fs');
        
        
        // 封装成一个 可以删除非空目录的函数(传入要删除的目录即可)
        function delDir (dir) {
        // 获取传入的目录下所有的文件 结果是一个数组
        var filesArr = fs.readdirSync(dir);
        // 循环遍历这个数组 ['bb', 'cc', 'text.txt']
        for (var i in filesArr) {
        // 拼接读取文件信息的路径
        var path = dir + '/' +filesArr[i] // ./aa/bb ./aa/cc ./aa/text.txt
        
        // 读取文件的信息
        var stat = fs.statSync(path);
        // 判断 如果是文件 直接删除
        if (stat.isFile()) {
        fs.unlinkSync(path) // 直接删除
        } else if (stat.isDirectory()) {
        // 递归调用自己
        delDir(path)
        }
        }
        // 删除空目录(文件夹)
        fs.rmdirSync(dir)
        }
        
        // 想如何调用?
        // delDir('D:\\day02');
        
        // 暴露出去
        // module.exports = delDir;
        </script>
    
发布时间:2019-09-24