Skip to content

Instantly share code, notes, and snippets.

@c4milo
Created September 2, 2010 21:29
Show Gist options
  • Save c4milo/562982 to your computer and use it in GitHub Desktop.
Save c4milo/562982 to your computer and use it in GitHub Desktop.
var fs = require('fs');
var path = require('path');
var sys = require('sys');
function copytree(src, dst) {
if(!path.existsSync(src)) {
throw new Error(src + ' does not exists. Nothing to be copied');
}
if(!fs.statSync(src).isDirectory()) {
throw new Error(src + ' must be a directory');
}
var filenames = fs.readdirSync(src);
var basedir = src;
if(!path.existsSync(dst)) {
fs.mkdirSync(dst, 0755);
}
for(name in filenames) {
var file = basedir + '/' + filenames[name];
var newdst = dst + '/' + filenames[name];
if(fs.statSync(file).isDirectory()) {
copytree(file, newdst);
} else {
/*fs.readFile(file, function(err, buf) {
if(err) {
throw err;
}
fs.writeFile(newdst, buf);
});*/
var reader = fs.createReadStream(file);
var writer = fs.createWriteStream(newdst);
sys.pump(reader, writer);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment