zoukankan      html  css  js  c++  java
  • 三、fs文件操作模块

    fs模块用于文件的读写等操作。
    该模块有如下这些方法:

    1、fs.stat() : 检测是文件还是目录

    const fs = require('fs');
    
    fs.stat('test.html',function(err,stats){
        if(err){
            console.log(err);
        }else{
            console.log('文件:' + stats.isFile());        //true
            console.log('目录:' + stats.isDirectory());   //false
        }
    });
    

    2、fs.mkdir():创建目录

    接受如下几个参数:

    • path :将创建的目录路径
    • mode :目录权限(读写权限),默认0777
    • callback :回调,传递异常参数err
    fs.mkdir('css',function(err){
        if(err){
            console.log(err);
        }else{
            console.log("创建成功");
        }
    });
    

    3、fs.writeFile():写入文件

    • filename (String) 文件名称
    • data (String | Buffer) 将要写入的内容,可以使字符串 或 buffer数据。
    • options (Object) option数组对象,包含 :
      • · encoding (string) 可选值,默认 ‘utf8′,当data使buffer时,该值应该为 ignored。
      • · mode (Number) 文件读写权限,默认值 438
      • · flag (String) 默认值 ‘w'
    • callback {Function} 回调,传递一个异常参数err。
    var str = "Hello Node.js";
    fs.writeFile('write.txt', str, 'utf8', function (err) {
        if (err) {
            console.log(err);
        }else{
            console.log("创建成功");
        }
    });
    

    如果该文件不存在则创建该名称文件并写入数据。如果多次写入的话,那么后面写入的内容会覆盖前面写入的内容。

    4、fs.appendFile():追加文件

    用法与writeFile相同,只是对此写入的话不会覆盖之前的数据,而是在其后追加数据。

    5、fs.readFile() :读取文件

    回调函数中的data即包含了读取的数据。

    fs.readFile('write.txt',function(err,data){
        if(err){
            console.log(err);
        }else{
            console.log(data.toString());
        }
    });
    

    6、fs.readdir():读取目录,获取目录下面的文件和文件夹。

    fs.readdir('css',function(err,data){
        if (err){
            console.log(err);
        }else{
            console.log(data);
        }
    });
    

    不过这样只能获取第一级目录

    7、fs.rename():重命名文件

    fs.rename('html/index.html','html/news.html',function(err){
      if (err) {
        console.log(err);
      } else {
        console.log('修改名字成功');
      }
    })
    

    这样就可以把index.html文件名修改为news.html

    这个方法还可以实现文件剪切功能:

    fs.rename('html/css/basic.css','html/style.css',function(err){
    
        if(err){
         console.log(err);
         return false;
       }
       console.log('剪切成功');
    })
    

    这样就可以把html/css/basic.css剪切到html/style.css

    8、fs.redir():删除目录

    fs.rmdir('text',function(err){
         if(err){
          console.log(err);
    
          return false;
        }
       console.log('删除目录成功');
    })
    

    这里的删除只能删除空目录。

    9、fs.unlink():删除文件

    fs.unlink('index.txt',function(err){
    
           if(err){
              console.log(err);
              return false;
         }
        console.log('删除文件成功');
    })
    

    10、fs.createReadStream():以流的方式读取数据

    这种方式读取文件是分块读取的

    // 创建一个可以读取的流,读取文件 input.txt 中
    var readStream=fs.createReadStream('input.txt');
    
    var str='';/*保存数据*/
    var count=0;  /*次数*/
    
    //触发data事件,开始取读数据
    readStream.on('data',function(chunk){
        str+=chunk;
        count++;
    })
    
    //触发end事件,读取完成
    readStream.on('end',function(chunk){
        console.log(count);
        console.log(str);
    })
    
    //读取失败
    readStream.on('error',function(err){
        console.log(err);
    })
    

    这种读取方式很高效,适合取读大批量数据。如果所读数据量不是很大的话使用上面的readFile方法即可。

    11、fs.createWriteStream():以流的方式写入文件

    var data = '我是从数据库获取的数据,我要保存到文件中去
    ';
    
    // 创建一个可以写入的流,写入到文件 output.txt 中
    var writerStream = fs.createWriteStream('output.txt');
    
    //开始写入数据
    writerStream.write(data,'utf8');
    
    //标记写入完成
    writerStream.end();
    
    //触发finish事件,完成写入
    writerStream.on('finish',function(){
        console.log('写入完成');
    })
    
    //失败
    writerStream.on('error',function(){
        console.log('写入失败');
    })
    

    同样,如果要写入的文件不存在就创建该文件再写入。

    12、管道流读取

    管道提供了一个输出流到输入流的机制。通常我们用于从一个流中获取数据并将数据传递到另外的一个流中。

    // 创建一个可读流,这是管道的输出端
    var readerStream = fs.createReadStream('input.txt');
    
    // 创建一个可写流,这是管道的输入端
    var writerStream = fs.createWriteStream('output.txt');
    
    // 管道读写操作
    // 读取 input.txt 文件内容,并将内容写入到 output.txt 文件中
    readerStream.pipe(writerStream);
    
    console.log("程序执行完毕");
    
  • 相关阅读:
    中国大学生计算机设计大赛
    static关键字
    C++语言的术语“引用”
    指针常量,常量指针
    汉字统计
    C读取文件
    Clock(win32)
    航空订票管理系统
    哈夫曼编码-数据结构实验
    php require、require_once和include、include_once的区别
  • 原文地址:https://www.cnblogs.com/hedawei/p/7989171.html
Copyright © 2011-2022 走看看