1. 程式人生 > 其它 >node.js實現文章的拷貝

node.js實現文章的拷貝

var fs = require('fs'),
   stat = fs.stat;
/*
 * 複製目錄中的所有檔案包括子目錄
 * @param{ String } 需要複製的目錄
 * @param{ String } 複製到指定的目錄
 */
var copy = function (src, dst) {
   // 讀取目錄中的所有檔案/目錄
   fs.readdir(src, function (err, paths) {
      if (err) {
         throw err;
      }

      paths.forEach(function (path) {
         var _src = src + '/' + path,
            _dst = dst + '/' + path,
            readable, writable;

         stat(_src, function (err, st) {
            if (err) {
               throw err;
            }

            // 判斷是否為檔案
            if (st.isFile()) {
               // 建立讀取流
               readable = fs.createReadStream(_src);
               // 建立寫入流
               writable = fs.createWriteStream(_dst);
               // 通過管道來傳輸流
               readable.pipe(writable);
            }
            // 如果是目錄則遞迴呼叫自身
            else if (st.isDirectory()) {
               exists(_src, _dst, copy);
            }
         });
      });
   });
};
// 在複製目錄前需要判斷該目錄是否存在,不存在需要先建立目錄
var exists = function (src, dst, callback) {
   fs.exists(dst, function (exists) {
      // 已存在
      if (exists) {
         callback(src, dst);
      }
      // 不存在
      else {
         fs.mkdir(dst, function () {
            callback(src, dst);
         });
      }
   });
};
exists('./pic_red2', './haha', copy);

文章來自:https://www.cnblogs.com/coding4/p/7495968.html