Java递归实现SFTP删除非空文件夹
Java递归实现SFTP删除非空文件夹
具体方法
public synchronized void deleteDic(String directory) throws JSchException, SftpException {
if (isDir(directory)) {
this.sftp.cd(directory);
Vector<ChannelSftp.LsEntry> entries = this.sftp.ls(".");
for (ChannelSftp.LsEntry l:
entries) {
// sftp的ls命令会包含父文件夹和当前文件夹,递归时排除以免死循环
if (!".".equals(l.getFilename()) && !"..".equals(l.getFilename())) {
deleteDic(l.getFilename());
}
}
this.sftp.cd("..");
this.sftp.rmdir(directory);
} else {
this.sftp.rm(directory);
}
}
public synchronized boolean isDir(String entry) throws SftpException {
return this.sftp.stat(entry).isDir();
}
缺点:时间复杂度高