服务器上每月需清理前上个月的文件夹,最开始是写了方法,递归删除,自造数据测试没问题。
public static void deleteDir(String dirPath) {
File file = new File(dirPath);
if (file.isFile()) {
file.delete();
} else {
File[] files = file.listFiles();
if (files == null) {
file.delete();
} else {
for (int i = 0; i < files.length; i++) {
deleteDir(files[i].getAbsolutePath());
}
file.delete();
}
}
}
上了测试后,执行了很久还没执行完,发现这个文件下的文件几百万个,这样循环去delete太慢了,所以改用了调用shell脚本的方法。
shell 如下:
#!/bin/bash
echo "executing ${0}"
if [ $# -lt 1 ]; then
echo "Please give the file or folder to delete"
exit -1
fi
#入参
del_dir=${1}
if [ ! -e ${del_dir} ]
then
echo "${del_dir} not exist"
exit -2
fi
rm -rf ${del_dir}
if [ $? -ne 0 ]
then
echo "delete ${del_dir} fail!"
exit 1
fi
echo "delete ${del_dir} success!"
exit 0