我寫了一個使用sftp客戶端的應用程序。Java程序仍在運行。如何停止?
在主要方法中,我調用一個從sftp服務器下載文件的方法。當文件被下載時,程序仍在運行。我怎樣才能阻止它?
public static void main(String[] args) {
downloadFile();
}
我寫了一個使用sftp客戶端的應用程序。Java程序仍在運行。如何停止?
在主要方法中,我調用一個從sftp服務器下載文件的方法。當文件被下載時,程序仍在運行。我怎樣才能阻止它?
public static void main(String[] args) {
downloadFile();
}
使用System.exit(0)
當下載完成後,downloadFile()
方法內。
旁註:確保您在這樣做之前處置資源並關閉緩衝區。
注意:儘管這在技術上有效,但如果nio(?)通道沒有正確關閉,這可能會產生意想不到的結果。 :)可能會更好地找出爲什麼downloadFile()無限期掛起(或循環)。 –
如果您不正確地處理資源並退出,會發生什麼情況? – vikingmaster
我不喜歡以這種方式退出進程,尤其是如果您使用它不必正常關閉線程,則不會這樣。 –
你可以顯示你的代碼downloadFile()方法。如果該方法有一些io流,則關閉並沖洗它們。之後,你可以調用System.exit()。但請記住,調用System.exit()後不會恢復執行。我認爲最好分享一下你的downloadFile()方法定義,因爲這個方法肯定有問題,這就是爲什麼它沒有返回並退出執行。
這是我的downloadfile()代碼。我正在使用zehon庫。
public static int downloadFile() { //upload do serwera SFTP
String sftpFolder = "/Kursy";
String nameOfFile = "Kursy.txt";
String toLocalFolder = "C:/DATA/work_dir";
int status = -1;
String test=null;
if (localfileExists()<sftpfileExists()) {
try {
SFTPClient sftpClient = new SFTPClient("127.0.0.1", "test", "test"); //polaczenie do servera SFtp
status = sftpClient.getFile(nameOfFile, sftpFolder, toLocalFolder);
System.out.println("downloaded");
} catch (Exception e) {
e.printStackTrace();
}
} else {
System.out.println("Daty sa takie same");
}
return status;
}
現在,我返回狀態之前,System.exit(0);它的工作:) – Wojtek
你可以嘗試一個布爾值。
public static boolean downloadFile() {
if(statement){
//when it works or finish the process that u want
return true;
}
return true;
}
您應該顯示「downloadFile()」的代碼。 –
請在'downloadFile()'內調試你的代碼,並告訴我們它掛起哪行代碼。 –