Ganymed SSH-2 for Java系列6之删除远程服务器上的非空目录
来源:互联网 发布:cad mac中文破解版2016 编辑:程序博客网 时间:2024/04/30 04:41
上一篇已经讲到如何删除一个服务器上面的目录,但是只能删除非空目录,如果是一个非空目录,其下面存在着目录和文件,并且目录中还有目录和文件,
这个该如何删除啦,下面给出方法:
首先给出服务器上的目录结构:
文件列表:
/usr/local/test/tt.txt
/usr/local/test/kk/ttp/t.txt
/usr/local/test/kk/ttt.txt
/usr/local/test/ttt/t.txt
目录列表:
/usr/local/test/kk/ttp
/usr/local/test/kk
/usr/local/test/ttt
/usr/local/test
继续在以前的方法中增加静态方法:
- /**
- *
- * @param host
- * @param username
- * @param password
- * @param remoteDerectory
- * @param port
- * @throws IOException
- */
- public static void rmDirectoryNotEmpty(String host, String username,
- String password,
- String remoteDerectory, int port) throws IOException {
- if (logger.isInfoEnabled()) {
- logger.info("rm [" + remoteDerectory + "] is " + host
- + remoteDerectory);
- }
- // 路径格式保持统一
- if (null != remoteDerectory && remoteDerectory.endsWith("/")) {
- remoteDerectory = remoteDerectory.substring(0,
- remoteDerectory.length() - 1);
- }
- Connection conn = null;
- try {
- conn = getOpenedConnection(host, username, password, port);
- SFTPv3Client sftpClient = new SFTPv3Client(conn);
- List<String> filelist = new ArrayList<String>();
- List<String> direlist = new ArrayList<String>();
- direlist.add(remoteDerectory);
- Vector v = sftpClient.ls(remoteDerectory);
- getUrlPath(sftpClient, filelist, direlist, remoteDerectory);
- System.out.println("file list is::");
- for (int i = filelist.size() - 1; i > -1; i--) {
- System.out.println(filelist.get(i));
- sftpClient.rm(filelist.get(i));
- }
- System.out.println("directory list is::");
- for (int i = direlist.size() - 1; i > -1; i--) {
- System.out.println(direlist.get(i));
- sftpClient.rmdir(direlist.get(i));
- }
- <span style="white-space:pre"> </span>
- <span style="white-space:pre"> sftpClient.close();</span>
- } finally {
- if (null != conn) {
- conn.close();
- }
- }
- }
- private static void getUrlPath(SFTPv3Client sftpClient,
- List<String> filelist, List<String> direlist, String remoteDerectory)
- throws IOException {
- Vector v = sftpClient.ls(remoteDerectory);
- for (Iterator iterator = v.iterator(); iterator.hasNext();) {
- SFTPv3DirectoryEntry object = (SFTPv3DirectoryEntry) iterator
- .next();
- System.out.println(object.filename);
- if (object.attributes.isDirectory()
- && object.filename.indexOf(".") == -1) {
- String rderectory = remoteDerectory + "/" + object.filename;
- direlist.add(rderectory);
- getUrlPath(sftpClient, filelist, direlist, rderectory);
- } else if (!object.filename.startsWith(".")
- && !object.filename.endsWith(".")) {
- String path = remoteDerectory + "/" + object.filename;
- filelist.add(path);
- }
- }
- }
- !object.filename.startsWith(".")
- && !object.filename.endsWith("."))
- object.filename
测试代码:
- String remoteDir = "/usr/local/test/";
- try {
- CommandRunner.rmNotEmptyDirectory("172.16.18.141", "root",
- "123456", remoteDir, 22);
- } catch (IOException e) {
- e.printStackTrace();
- }
执行结果:
这个地方只是简单的打印,可以去服务器上查看,目录的确已经被删除了。
0 0
- Ganymed SSH-2 for Java系列6之删除远程服务器上的非空目录
- Ganymed SSH-2 for Java系列6之删除远程服务器上的非空目录
- Ganymed SSH-2 for Java系列7之删除远程服务器上的非空目录(方法说明)
- Ganymed SSH-2 for Java系列7之删除远程服务器上的非空目录(方法说明)
- Ganymed SSH-2 for Java系列7之删除远程服务器上的非空目录(运用执行shell脚本的方式)
- Ganymed SSH-2 for Java系列7之删除远程服务器上的非空目录(运用执行shell脚本的方式)
- Ganymed SSH-2 for Java系列5之删除远程服务器上的目录
- Ganymed SSH-2 for Java系列5之删除远程服务器上的目录(补充说明)
- Ganymed SSH-2 for Java系列5之删除远程服务器上的目录
- Ganymed SSH-2 for Java系列5之删除远程服务器上的目录(补充说明)
- Ganymed SSH-2 for Java系列4之删除远程服务器上的文件
- Ganymed SSH-2 for Java系列4之删除远程服务器上的文件
- Ganymed SSH-2 for Java系列2之连接远程服务器
- Ganymed SSH-2 for Java系列2之连接远程服务器
- Ganymed SSH-2 for Java系列3之执行远程shell 命令
- Ganymed SSH-2 for Java系列3之执行远程shell 命令
- Ganymed SSH-2 for Java系列8之SFTPv3Client说明
- Ganymed SSH-2 for Java系列9之scpPut
- 利用CSS3中animation属性实现雪花飘落功能
- 第六周作业--利用哈夫曼编码英文字母表
- 混排算法与吉尔比·贝克问题
- 设计模式之外观模式
- one 0f dependencies couldnot be loaded about sharepoint 2010 on windows 2012 / 2008 server
- Ganymed SSH-2 for Java系列6之删除远程服务器上的非空目录
- calloc和malloc的区别,兼谈new
- <华为的世界>读后感
- SQL通用版分页存储过程
- 装饰者模式的分析
- GDI泄露问题(1)
- Java并发编程实战笔记_并发任务执行
- MySQL中文乱码问题
- GO语言 代码的嵌套——各种状态的组合