zoukankan      html  css  js  c++  java
  • Node.js 扩展时间监听器:文件监视器

    创建一个Watcher类来处理放在某个目录下的文件。然后可以用这个类创建一个工具,该工具可以监视目录(watch目录,将放到里面的文件名都改成小写),并将文件复制到一个单独目录(done目录)中。

    扩展事件发射器需要三步:

    1. 创建类的构造器;
    2. 继承时间发射器的行为;
    3. 扩展这些行为。

    代码:

    function Watcher(watchDir, processedDir) {
        this.watchDir       = watchDir;
        this.processedDir   = processedDir;
    }
    
    var events = require('events')
        , util = require('util');
    
    util.inherits(Watcher, events.EventEmitter);
    
    var fs = require('fs')
        , watchDir = './watch'
        , processedDir = './done';
    
    Watcher.prototype.watch = function () {
        var watcher = this;
        fs.readdir(this.watchDir, function (err, files) {
            if (err) throw err;
            for (var index in files) {
                watcher.emit('process', files[index]);
            }
        })
    };
    
    Watcher.prototype.start = function () {
        var watcher = this;
        fs.watchFile(watchDir, function () {
            watcher.watch();
        });
    };
    
    var watcher = new Watcher(watchDir, processedDir);
    
    watcher.on('process', function process(file) {
        var watchFile       = this.watchDir + '/' + file;
        var processedDir    = this.processedDir + '/' + file.toLowerCase();
    
        fs.rename(watchFile, processedDir, function (err) {
            if (err) throw err;
        });
    });
    
    watcher.start();
  • 相关阅读:
    下拉列表实现模糊匹配选择
    Java读取修改Properties文件
    idea2018.2.4的安装激活与热部署插件JRebel的激活方法
    request.getScheme() 使用方法
    Navicat连接mysql8.0.1版本出现1251--Client does not support authentication protocol requested by server的解决
    javascript
    CSS第二节
    HTML+CSS
    mysql
    ubuntu常见错误
  • 原文地址:https://www.cnblogs.com/sumuzhe/p/7467133.html
Copyright © 2011-2022 走看看