【管子先生的Node之旅·16】深入探究下Node的FS模块

fs 模块允许你通过 Stream Api 来对数据进行读写操作。与 readFilewriteFile 方法不同的是,他对内存的分类不是一次性的,也就是说可以分块上传,这对上传一些大文件来说很方便的。

//引入fs模块
var fs = require('fs');
//使用createReadStream来接受文件
var stream = fs.createReadStream('./cli.js');
//处理数据
stream.on('data', function(chunk) {
    console.log('处理文件');
    console.log(chunk);
});
//接收完成
stream.on('end', function() {
    console.log('数据接收完毕');
});

运行结果:

image.png

注:列如在写如系统文件的时候也可使用 fs.WriteStream来实现,这样可以实现打开一次文件长时间写入。

监听

Node 允许监听文件或者目录是否发生变化,当有文件或文件夹发生变化,会分发一个事件,然后触发指定函数。下面我们来做一个监听 css 文件的监听。

//引入fs
var fs = require('fs');
//获取当前目录所有文件
var files = fs.readdirSync(process.cwd());
files.forEach(function(fileName) {
    //过滤css
    if (/\.css/.test(fileName)) {
        //监听css文件
        fs.watchFile(process.cwd() + '\\' + fileName, function() {
            console.log('当前发生改变的CSS文件有:' + fileName);
        })
    }
});

执行结果:


image.png

除了 fs.watchFile 之外 , 还可以使用 fs.watch 来监听整个目录。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • https://nodejs.org/api/documentation.html 工具模块 Assert 测试 ...
    KeKeMars阅读 6,413评论 0 6
  • //公共引用 varfs =require('fs'), path =require('path'); 1、读取文...
    才気莮孒阅读 841评论 0 1
  • 个人入门学习用笔记、不过多作为参考依据。如有错误欢迎斧正 目录 简书好像不支持锚点、复制搜索(反正也是写给我自己看...
    kirito_song阅读 2,505评论 1 37
  • 文件系统模块是一个封装了标准的 POSIX 文件 I/O 操作的集合。通过require('fs')使用这个模块。...
    保川阅读 808评论 0 0