Jon*_*upp 13
如何使用节点本机fs模块http://nodejs.org/api/fs.html#fs_fs_readdir_path_callback.它readdir和readdirSync函数为您提供了所有包含文件名(不包括.和..)的数组.如果长度是0你的目录是空的.
Dav*_*don 11
这是一个丑陋的黑客,但无论如何我会把它扔出去.你可以只调用fs.rmdir该目录.如果回调返回包含的错误code: 'ENOTEMPTY',则它不为空.如果成功,则可以调用fs.mkdir并替换它.如果您的脚本是首先创建目录的脚本,具有适当的权限等,则此解决方案可能才有意义.
您可以使用exec()从NodeJS中执行任何* nix shell命令。因此,您可以使用旧的'ls -A $ {folder} | wc -l'命令(列出$ {folder}中包含的所有文件/目录,从要从计数中排除的输出中隐藏当前目录(。)和父目录(..)的条目,并对它们进行计数数)。
例如,如果./tmp不包含任何文件/目录,则下面的内容将显示“目录./tmp为空”。否则,它将显示它包含的文件/目录的数量。
var dir = './tmp';
exec( 'ls -A ' + dir + ' | wc -l', function (error, stdout, stderr) {
if( !error ){
var numberOfFilesAsString = stdout.trim();
if( numberOfFilesAsString === '0' ){
console.log( 'Directory ' + dir + ' is empty.' );
}
else {
console.log( 'Directory ' + dir + ' contains ' + numberOfFilesAsString + ' files/directories.' );
}
}
else {
throw error;
}
});
Run Code Online (Sandbox Code Playgroud)