2013-07-26 106 views
0

我正在使用commons-net的Java FTPClient類從ftp服務器下載大文件。 我想要文件重新啓動從某個偏移量下載,如果我檢測到一些連接失敗,如:我的客戶端連接斷開或我的服務器關閉連接。 With client.retrieveFile(filename, out)如果我在下載文件時關閉客戶端連接,則不會收到任何異常,該程序僅在那裏下載或執行任何操作時才凍結。我怎樣才能觸發這個事件?我看到一個FTPConnectionClosedException,但它只在服務器關閉我的連接時才被調用。檢測到Java FTP客戶端丟失連接

回答

0

您可以保留某種序列標識,它可以表示已下載了多少數據,並在您合法完成後將其設置爲某個特殊值。

sequence=0; 
try{ 
while(notDone){ 
    n = client.retrieveFile(filename, out); //bytes read 
    sequence =+ n; 
}finally{ 
if(sequence != SPECIAL_VALUE){ 
    throw new customException(); 
    } 
} 

最終您的代碼將最終執行塊,您可以決定如何處理它。或者,如果您想要更多fail fast解決方案,您可以通過測量sequence上次更新的時間來使用超時。

希望這會有所幫助!