0
我試圖通過SFTP刪除非空文件夾的JSCH,但它沒有奏效。SFTP非空文件夾遞歸刪除
這一個工作,但它不是免費的:(我已經過去30天的試用期。我公司拒絕支付他們只是通過SFTP刪除的文件夾。
package com.test.cvsutil;
import java.util.List;
import org.apache.log4j.Logger;
import com.jscape.inet.sftp.Sftp;
import com.jscape.inet.sftp.SftpException;
import com.jscape.inet.sftp.events.SftpAdapter;
import com.jscape.inet.ssh.util.SshParameters;
public class SFTPFileDeleter extends SftpAdapter {
static String hostName = ServerProperties.getProperty("test.ftp.hostname");
static String username = ServerProperties.getProperty("test.ftp.login");
static String password = ServerProperties.getProperty("test.ftp.password");
static String directory = ServerProperties.getProperty("test.ftp.directory");
private static Sftp sftp;
private static org.apache.log4j.Logger log = Logger.getLogger(SFTPFileDeleter.class);
public static boolean deleteDir(List <String> path) throws SftpException {
Boolean flag = false;
log.info("------------------------ file(s) delete started ------------------------");
sftp = new Sftp(new SshParameters(hostName, username, password));
sftp.connect();
sftp.setDir(directory);
for (String eachOne : path) {
if (!sftp.getDirListingAsString(eachOne).equals("")){
log.info(" ------ Deleted Folder/Scenario Name: " + eachOne);
//log.info(" ------ check file path: " + directory+eachOne);
//System.out.println(directory+eachOne);
sftp.deleteDir(directory+eachOne, true);
flag = true;
}
}
sftp.disconnect();
log.info("------------------------ file(s) delete finished -----------------------");
return flag;
}
// open connection to the remote server.
public static void openConnection() throws SftpException {
sftp.connect();
}
// disconnect from the remote server.
public static void closeConnection() {
sftp.disconnect();
}
}
,這是錯誤我得到了,所以jscape sftp
不會爲我工作。
2014-11-29 09:00:04 ERROR MainEntry:47 - There was error and message is java.lang.RuntimeException: Your Secure FTP Factory license expired on Sun Nov 23 00:31:21 CST 2014. Please v
isit http://www.jscape.com to purchase a licensed copy.
2014-11-29 09:00:04 ERROR MainEntry:48 - There was error and stack-trace is [Ljava.lang.StackTraceElement;@fdb00d
任何的幫助深表感謝。在這裏詢問是否有人知道,它刪除非空文件夾其他庫。
您可以在http://softwarerecs.stackexchange.com/ – 2014-12-01 16:30:13
問這樣的問題了爲什麼不直接使用jsch試圖刪除文件夾之前,遞歸地刪除文件夾中的一切嗎?獲取目錄中所有內容的列表並遍歷它們。測試每個以查看它是否是文件或目錄。如果它是一個目錄,請進行遞歸調用以將其清空並將其刪除。如果它是一個文件,只需刪除它。 – Rob 2014-12-01 16:33:33
@ jiten-k你在這裏尋找什麼樣的答案?尋找第三方,充分運作的軟件的問題在這裏是無關緊要的。您發佈的代碼顯然不起作用,因爲您的JScape庫的許可證已過期。你應該能夠以jsch來實現這個,但是你沒有提供關於你的jsch嘗試的任何細節。 – Kenster 2014-12-01 19:15:11