在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

//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();
            }
        }
    }