sftp递归删除文件夹
背景:项目在做审计时,需要将任务运维过程中产生的审计信息上传到第三方平台,使用的工具是第三方库jsch,使用其中的ChannelSftp进行文件上传。
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>
在进行sftp上传时,需要在上传失败时删除已上传的部分,但是看了一下相关的现有方法,发现没有能够直接删除文件夹(文件夹中包含文件或者文件夹)的方法。然后就自己搞了一个,亲测可用。
/**
* 递归删除远程服务器文件夹
* @param deleteDest
* @throws SftpException
*/
public void deleteDirectory(String deleteDest) throws SftpException {
if (sftp.stat(deleteDest).isDir()) {
sftp.cd(deleteDest);
Vector<ChannelSftp.LsEntry> entries = sftp.ls(".");
for (ChannelSftp.LsEntry entry: entries) {
String fileName = entry.getFilename();
if(fileName.equals(".") || fileName.equals("..")){
continue;
}
deleteDirectory(entry.getFilename());
}
sftp.cd("..");
sftp.rmdir(deleteDest);
} else {
sftp.rm(deleteDest);
}
}
好了,以上就是使用jsch 删除远程服务器文件夹的方法,如果对你有帮助,就给个赞吧!