如何克服基于 Cloud Sync Engine 的虚拟驱动器中文件下载的 4Gb 限制?

问题描述

我正在使用 Cloud Files API 和 this project 实现虚拟驱动器。但是,下载会停留在大于 4Gb 的文件上。进度停止并且 TransferDataAsync() 不再被调用,即使文件中还有更多字节。

解决方法

您需要在段长度中添加可选长度:

public async Task TransferDataAsync(long offset,long length,ITransferDataOperationContext operationContext,ITransferDataResultContext resultContext)
{
    if (operationContext.FileSize > 0x100000000)
    {
        length += operationContext.OptionalLength;
    }
    …
}

根据我的经验,这会在一定程度上减慢小文件的下载速度。因此,仅对超过 4Gb 的文件执行此操作是有意义的。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...