一、首先搞清楚系统中的几种文件格式,这里用Linux说明:
随便找一台Linux系统,使用ls -ll命令可以看到如下信息
drwxr-xr-x 第一个位置的d表示这是一个文件夹
-rw-r–r-- 第一个位置的-表示这是一个文件
lrwxrwxrwx第一个位置的l表示这是一个文件连接
二、现在使用nodejs删除这些目录、文件、文件链接使用的方法是不一样的,删除目录的方法是:fs.rmdirSync(dir),删除文件和文件链接的方法:fs.unlinkSync(dir)。但在调用这两个方法前需要先判断是目录,还是文件,还是文件链接。fs模块提供了两个方法,fs.lstatSync和fs.statSync,两个方法都是用来查看文件和目录的详细信息,但lstatSync能辨识出文件链接。fs.lstatSync(dir).isDirectory()方法遇到文件链接时返回false,fs.statSync(dir).isDirectory()返回true。
如果要删除的目录里有文件链接,却使用了fs.statSync(dir),将会把这个文件链接当一个目录,从而导致fs.rmdirSync(dir)执行失败。