Android FTP断点续传 ftpClient.appendFileStream()方法返回输出流为空
在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(); } } }