nodejs复制文件

310 阅读1分钟

nodejs 文件系统 fs

复制文件

涉及到的知识点:

  • fs.access
  • fs.mkdirSync
  • fs.readdir
  • fs.stat
  • fs.writeFileSync
  • fs.readFileSync

详细可自行查询nodejs官网:www.nodeapp.cn/

/*
 * 复制目录、子目录,及其中的文件
 * @param src {String} 要复制的目录
 * @param dist {String} 复制到目标目录
 */
function _copyDir(src, dist, callback) {
  fs.access(dist, function (err) {
    if (err) {
      // 目录不存在时创建目录
      fs.mkdirSync(dist);
    }
    _copy(null, src, dist);
  });

  function _copy(err, src, dist) {
    if (err) {
      callback(err);
    } else {
      fs.readdir(src, function (err, paths) {
        if (err) {
          callback(err);
        } else {
          paths.forEach(function (path) {
            var _src = src + '/' + path;
            var _dist = dist + '/' + path;
            fs.stat(_src, function (err, stat) {
              if (err) {
                callback(err);
              } else {
                // 判断是文件还是目录
                if (stat.isFile()) {
                  fs.writeFileSync(_dist, fs.readFileSync(_src));
                } else if (stat.isDirectory()) {
                  // 当是目录是,递归复制
                  _copyDir(_src, _dist, callback);
                }
              }
            });
          });
        }
      });
    }
  }
}