(三)fs文件操作模块

news/2024/5/19 21:04:13

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 = '我是从数据库获取的数据,我要保存到文件中去\n';

// 创建一个可以写入的流,写入到文件 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("程序执行完毕");

http://www.niftyadmin.cn/n/3873764.html

相关文章

qpython3使用教程_python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例...

PyQt5打印控件QPrinter简介 打印图像是图像处理软件中的一个常用功能,打印图像实际上是在QPaintDevice中画图,与平时在QWidget。QPixmap和QImage中画图是一样的,都是创建一个QPainter对象进行画图的,只是打印使用的是QPrinter&…

电动机的转速为确定,应选用分辨率为多少的编码器呢?

1、电动机的转速为3000r/min,应选用分辨率为多少的编码器呢?

js常用函数_工作中常用的 JS 工具函数

如果文章和笔记能带您一丝帮助或者启发,请不要吝啬你的赞和收藏,你的肯定是我前进的最大动力?附笔记链接,阅读往期更多优质文章可移步查看,喜欢的可以给我点赞鼓励哦:https://github.com/Wscats/CV/issues/27为元素添…

c++中 explicit的作用

C提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。 C中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。 …

金属箔式应变片性能—单臂电桥

1、电桥基础知识 2、调零 1)零点的产生(摘自 桥式传感器的调零分析 [会议论文] 孙徐仁- 20012001全国压力计量测试技术年会) 2)放大器调零 3)电桥平衡调节 4、实验接线图 5、应用(拓展部分&#xff09…

c事件和委托的区别_unity3d 笔记32事件

事件event事件是一个特殊的委托或者理解为事件内部是由委托实现的事件只能通过-,添加方法(事件处理),不能赋值事件只能在类中触发,不能由其他的类触发,其他类只能用-,添加删除方法来控制事件的处理,触发事件…

windows中python环境搭建

Python的安装: 1.进入Python官方网站下载安装包 点击导航栏的 Downloads 会自动识别你的windows系统 你会看到 Python3.6.2 和 Python2.7.13 (32位系统)的安装包 注:Python3以后版本不再向Python2进行兼容,所有…

西门子200PLC不工作了,所有灯都灭了

1、实验箱外置交流保险断,换保险,再测量得知,应该是电源部分坏了,拆机吧; 2、上图 3、观察电源板,电阻(编号R814 ,贴片R39,0.75w)烟花了,初步判断可能是学生把传感器电源部分短路了引起的。 安森美半导体(ON Semiconductor) 器件: v806 超快恢复二极管参数: 603…