我对com.jscape.inet.sftp.Sftp
类中使用的简历上传方法有疑问。
根据API,在下面的方法中,第二个参数是localFileOffset
。
resumeUpload(java.lang.String localFile, long localFileOffset)
如何计算localFileOffset
?我假设localFileOffset
应该是上传应该继续的点,这基本上是已经以字节为单位上传的文件的文件大小。
如下所示:
Boolean isRemoteFileAvailable = sftp.isValidPath(uploadDir + "/" + RemoteFileName);
if (isRemoteFileAvailable)
{
remoteFileSize = sftp.getFilesize(rrFileName);
localFileOffset = remoteFileSize;
}
答案 0 :(得分:0)
经过几次打击和试验,这里有几轮测试是我的结论。
根据API,下面是方法定义: resumeUpload(java.io.File localFile,long localFileOffset)
如果使用localFileOffset(本地文件大小 - 远程文件大小),则最终会丢失数据。
第二个参数绝对不是本地文件偏移量,而是远程文件大小(以字节为单位),计算为sftp.getFilesize(remoteFile);
我已多次测试我的代码,多次停止并使用简历上传,并将原始文件与上传的文件进行比较。没有差异,上次恢复上传在几秒钟内完成,从而确认它从完成的地方恢复而不是从头开始上传。