@DoesServiceRequest
    public void uploadRange(final InputStream sourceStream, final long offset, final long length,
            final AccessCondition accessCondition, FileRequestOptions options, OperationContext opContext)
            throws StorageException, IOException, URISyntaxException {
        if (opContext == null) {
            opContext = new OperationContext();
        }

        this.getShare().assertNoSnapshot();

        options = FileRequestOptions.populateAndApplyDefaults(options, this.fileServiceClient);

        final FileRange range = new FileRange(offset, offset + length - 1);
        final byte[] data = new byte[(int) length];
        String md5 = null;

        int count = 0;
        int total = 0;
        while (total < length) {
            count = sourceStream.read(data, total, (int) Math.min(length - total, Integer.MAX_VALUE));
            total += count;
        }

        if (options.getUseTransactionalContentMD5()) {
            try {
                final MessageDigest digest = MessageDigest.getInstance("MD5");
                digest.update(data, 0, data.length);
                md5 = Base64.encode(digest.digest());
            }
            catch (final NoSuchAlgorithmException e) {
                // This wont happen, throw fatal.
                throw Utility.generateNewUnexpectedStorageException(e);
            }
        }

        this.putRangeInternal(range, FileRangeOperationType.UPDATE, data, length, md5, accessCondition, options,
                opContext);
    }
@DoesServiceRequest
    public void uploadRange(final InputStream sourceStream, final long offset, final long length,
            final AccessCondition accessCondition, FileRequestOptions options, OperationContext opContext)
            throws StorageException, IOException, URISyntaxException {
        if (opContext == null) {
            opContext = new OperationContext();
        }

        this.getShare().assertNoSnapshot();

        options = FileRequestOptions.populateAndApplyDefaults(options, this.fileServiceClient);

        final FileRange range = new FileRange(offset, offset + length - 1);
        final byte[] data = new byte[(int) length];
        String md5 = null;

        int count = 0;
        int total = 0;
        while (total < length) {
            count = sourceStream.read(data, total, (int) Math.min(length - total, Integer.MAX_VALUE));
            total += count;
        }

        if (options.getUseTransactionalContentMD5()) {
            try {
                final MessageDigest digest = MessageDigest.getInstance("MD5");
                digest.update(data, 0, data.length);
                md5 = Base64.encode(digest.digest());
            }
            catch (final NoSuchAlgorithmException e) {
                
                throw Utility.generateNewUnexpectedStorageException(e);
            }
        }

        this.putRangeInternal(range, FileRangeOperationType.UPDATE, data, length, md5, accessCondition, options,
                opContext);
    }
@ DoesServiceRequest public void uploadRange ( final InputStream sourceStream , final long offset , final long length , final AccessCondition accessCondition , FileRequestOptions options , OperationContext opContext ) throws StorageException , IOException , URISyntaxException { if ( opContext == null ) { opContext = new OperationContext ( ) ; } this . getShare ( ) . assertNoSnapshot ( ) ; options = FileRequestOptions . populateAndApplyDefaults ( options , this . fileServiceClient ) ; final FileRange range = new FileRange ( offset , offset + length - 1 ) ; final byte [ ] data = new byte [ ( int ) length ] ; String md5 = null ; int count = 0 ; int total = 0 ; while ( total < length ) { count = sourceStream . read ( data , total , ( int ) Math . min ( length - total , Integer . MAX_VALUE ) ) ; total += count ; } if ( options . getUseTransactionalContentMD5 ( ) ) { try { final MessageDigest digest = MessageDigest . getInstance ( "MD5" ) ; digest . update ( data , 0 , data . length ) ; md5 = Base64 . encode ( digest . digest ( ) ) ; } catch ( final NoSuchAlgorithmException e ) { // This wont happen, throw fatal. throw Utility . generateNewUnexpectedStorageException ( e ) ; } } this . putRangeInternal ( range , FileRangeOperationType . UPDATE , data , length , md5 , accessCondition , options , opContext ) ; }
Uploads a range to a file using the specified lease ID, request options, and operation context.

@param sourceStream
An {@link InputStream} object which represents the input stream to write to the file.
@param offset
A <code>long</code> which represents the offset, in number of bytes, at which to begin writing the
data.
@param length
A <code>long</code> which represents the length, in bytes, of the data to write.
@param accessCondition
An {@link AccessCondition} object which represents the access conditions for the file.
@param options
A {@link FileRequestOptions} object that specifies any additional options for the request. Specifying
<code>null</code> will use the default request options from the associated service client (
{@link CloudFileClient}).
@param opContext
An {@link OperationContext} object which represents the context for the current operation. This object
is used to track requests to the storage service, and to provide additional runtime information about
the operation.

@throws IOException
If an I/O exception occurred.
@throws StorageException
If a storage service error occurred.
@throws URISyntaxException
Uploads a range to a file using the specified lease ID request options and operation context .