node.js實現文章的拷貝
阿新 • • 發佈:2022-03-01
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);