在Android FTP中實現的斷點續傳,但是續傳一直失敗,報錯如下
java.lang.NullPointerException: Attempt to invoke virtual method 'void java.io.OutputStream.write(byte[], int, int)' on a null object reference
出問題是因為調用 ftpClient.appendFileStream 返回流為 null導致的。
//out 可能打開為null OutputStream out = ftpClient.appendFileStream(remotePath);
可能是上傳異常中斷后,FTP服務器還不知道連接已斷開,還一直占用文件,客戶端馬上重連去續傳這個文件就會打開流失敗。
當前的處理是,獲取到流為null的時候直接刪除FTP服務器上的這個文件,然后重新上傳。
public void deleteFailedSession(String nullRemoteFile) { if(!nullRemoteFile.isEmpty()) { try { ftpClient.deleteFile(nullRemoteFile); } catch (IOException e) { e.printStackTrace(); } } }