I'm trying to create a sort of multi-part download mechanism using jclouds
download with a GetOption of "range". I'd like to just download 5MB ranges
until I run out of file to download. The doc on the use of this option is a bit
sparse. Can someone help me understand the semantics of download with a range
option?
Here's what I'd like to do:
long start = 0;
long size = 5 * 1024 * 1024;
long length = size;
while (length < size) {
long limit = start + size
Blob blob = getBlob(container, key, range(start, limit - 1));
ContentMetadata meta = blob.getMetadata().getContentMetadata();
long length = meta.getContentLength();
// stream 'length' bytes into a buffer and process the buffer here
start = limit;
}
Assumptions:
1) content length will return the actual size downloaded if it's less than the
range size specified.
2) It's OK to request a range of bytes that's outside the file extant - you'll
just get back a length of zero.
Anything I'm missing?
Thanks in advance,
John