Skip to content

Instantly share code, notes, and snippets.

@Sharian
Last active August 29, 2015 14:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Sharian/067d1f572d1a00655e5a to your computer and use it in GitHub Desktop.
Save Sharian/067d1f572d1a00655e5a to your computer and use it in GitHub Desktop.
Recursive Folder Deletion using NodeJS
FileSystemAdapter.deleteDirectory = function(path)
{
var deferred = Q.defer();
fs.readdir(path, function(err, files)
{
if(!err)
{
var ContentRemoved = [];
files.forEach(function(element)
{
ContentRemoved.push(FileSystemAdapter.remove(path+'\\'+element));
});
Q.all(ContentRemoved)
.then(function()
{
fs.rmdir(path, function(err)
{
if(!err) deferred.resolve();
else deferred.reject(err);
});
});
}
else deferred.reject(err);
});
return deferred.promise;
};
FileSystemAdapter.deleteFile = function(path)
{
var deferred = Q.defer();
fs.unlink(path, function(err)
{
if(!err) deferred.resolve();
else deferred.reject(err);
});
return deferred.promise;
};
FileSystemAdapter.remove = function(path)
{
var Removed = Q.defer();
fs.lstat(path, function(err, stats)
{
if(!err)
{
var ContentPromise = stats.isDirectory() ? FileSystemAdapter.deleteDirectory(path) : FileSystemAdapter.deleteFile(path);
ContentPromise.then(function() { Removed.resolve(); }).fail(function(error) { Removed.reject(error) });
}
else Removed.reject(err);
});
return Removed.promise;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment