zoukankan      html  css  js  c++  java
  • Node.js学习笔记(四) --- fs模块的使用

    目录

    1. fs.stat 检测是文件还是目录
    2. fs.mkdir 创建目录
    3. fs.writeFile 创建写入文件
    4. fs.appendFile 追加文件
    5. fs.readFile 读取文件
    6. fs.readdir 读取目录
    7. fs.rename 重命名
    8. fs.rmdir 删除目录
    9. fs.unlink 删除文件
    10. fs.createReadStream 从文件流中读取数据
    11. fs.createWriteStream 写入文件
    12. 管道流

    0.引入fs模块

    var fs=require('fs');  

    1. fs.stat 检测是文件还是目录

    fs.stat('html/style.css', function (err, stats) {
      if (err) {
        console.log(err);
    
        return false;
      }
    
      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);
        return false;
      }
      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。
    fs.writeFile('t.txt', '你好nodejs', 'utf8', function (err) {
      if (err) {
        console.log(err);
        return false;
      }
      console.log('写入成功');
    })
    

    4. fs.appendFile 追加文件

    fs.appendFile('t.txt', '这是追加的内容', function (err) {
      if (err) {
        console.log(err);
        return false;
      }
      console.log('写入成功');
    })
    

    5.fs.readFile 读取文件

    fs.readFile('t.txt', function (err, data) {
      if (err) {
        console.log(err);
        return false;
      }
      console.log(data);
      console.log(data.toString());
    })
    

    6.fs.readdir 读取目录 

    把目录下面的文件和文件夹都获取到

    fs.readdir('html', function (err, data) {
      if (err) {
        console.log(err);
        return false;
      }
      console.log(data);
    })

    7.fs.rename 重命名 

    1、改名 
    
    2、剪切文件
    1、改名
    fs.rename('html/index.html', 'html/news.html', function (err) {
      if (err) {
        console.log(err);
        return false;
      }
      console.log('修改名字成功');
    })
    2、剪切文件
    fs.rename('html/style.css', 'html/test/basic.css', function (err) {
      if (err) {
        console.log(err);
        return false;
      }
      console.log('剪切成功');
    })
    

    8. fs.rmdir 删除目录

    这个方法只能删除目录,不可以删除文件

    删除空目录

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

    9. fs.unlink 删除文件

    fs.unlink('css/1.js', function (err) {
      if (err) {
        console.log(err);
        return false;
      }
      console.log('删除文件成功');
    })
    

    10. fs.createReadStream 从文件流中读取数据

    //流的方式读取文件
    var readStream = fs.createReadStream('input.txt');
    var str = '';
    //保存数据
    var count = 0;
    //次数
    readStream.on('data', function (chunk) {
      str += chunk;
      count++;
    })
    
    //读取完成
    readStream.on('end', function (chunk) {
      console.log(count);
      console.log(str);
    })
    
    //读取失败
    readStream.on('error', function (err) {
      console.log(err);
    })
    

    11. fs.createWriteStream 写入文件

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

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

     

    如上面的图片所示,我们把文件比作装水的桶,而水就是文件里的内容,我们用一根管子(pipe)连接两个桶使得水从一个桶流入另一个桶,这样就慢慢的实现了大文件的复制过程。

    以下实例我们通过读取一个文件内容并将内容写入到另外一个文件中。 
    // 创建一个可读流
    var readerStream = fs.createReadStream('input.txt');
    // 创建一个可写流
    var writerStream = fs.createWriteStream('output.txt');
    // 管道读写操作
    // 读取 input.txt 文件内容,并将内容写入到 output.txt 文件中
    readerStream.pipe(writerStream);
    console.log("程序执行完毕");
    

    Demo

    1、判断服务器上面有没有upload目录。没有创建这个目录

    var fs = require('fs');
    fs.stat('upload', function (err, stats) {
      if (err) {  // 没有这个目录
        fs.mkdir('upload', function (error) {
          if (error) {
            console.log(error);
            return false;
          }
          console.log('创建成功');
        })
      } else {
        console.log('目录已经存在');
        console.log(stats.isDirectory());
      }
    })

     

  • 相关阅读:
    数字加密
    大道至简第四章读后感
    输出类中的对象个数
    大道至简第三章读后感
    02java语法基础问题总结
    从命令行接收多个数字并求和输出
    软件工程个人作业03
    第四周学习进度条
    软件工程概论-课后作业2(单元测试)
    第三周学习进度
  • 原文地址:https://www.cnblogs.com/chenyablog/p/9673801.html
Copyright © 2011-2022 走看看