2014-02-17 44 views
0

我寫了一個使用sftp客戶端的應用程序。Java程序仍在運行。如何停止?

在主要方法中,我調用一個從sftp服務器下載文件的方法。當文件被下載時,程序仍在運行。我怎樣才能阻止它?

public static void main(String[] args) { 
    downloadFile(); 
} 
+1

您應該顯示「downloadFile()」的代碼。 –

+1

請在'downloadFile()'內調試你的代碼,並告訴我們它掛起哪行代碼。 –

回答

0

使用System.exit(0)當下載完成後,downloadFile()方法內。

旁註:確保您在這樣做之前處置資源並關閉緩衝區。

+0

注意:儘管這在技術上有效,但如果nio(?)通道沒有正確關閉,這可能會產生意想不到的結果。 :)可能會更好地找出爲什麼downloadFile()無限期掛起(或循環)。 –

+0

如果您不正確地處理資源並退出,會發生什麼情況? – vikingmaster

+0

我不喜歡以這種方式退出進程,尤其是如果您使用它不必正常關閉線程,則不會這樣。 –

0

你可以顯示你的代碼downloadFile()方法。如果該方法有一些io流,則關閉並沖洗它們。之後,你可以調用System.exit()。但請記住,調用System.exit()後不會恢復執行。我認爲最好分享一下你的downloadFile()方法定義,因爲這個方法肯定有問題,這就是爲什麼它沒有返回並退出執行。

0

這是我的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; 

     } 
+0

現在,我返回狀態之前,System.exit(0);它的工作:) – Wojtek

0

你可以嘗試一個布爾值。

public static boolean downloadFile() { 

    if(statement){ 
    //when it works or finish the process that u want 
      return true; 

    } 

    return true; 

    }