At times network connections fail or processes are restarted,
interrupting transfers. Also, it is sometimes necessary to terminate
transfers, particularly for larger files that take a long time to
transfer.
In
these cases, it is often desirable to resume transfers rather than
starting them from scratch - especially for large files. This means
only the remaining part of the file is subsequently uploaded or
downloaded.
Please note
that resume is only supported for binary mode transfers. Because of line terminator
translations, ASCII mode resumes are inpractical.
Invoking
cancelAllTransfers()
will cancel the currently executing transfer. To be able to call this method during a
transfer will require a separate thread. Once this method is called,
the transfer will cease once the current transfer buffer is emptied:
Cancelling
a transfer may leave the connection to the server in an inconsistent
state. After cancelling a transfer, it may be necessary to quit and
reconnect to the server.
Once
a transfer has been cancelled
or has been interrupted, it can be resumed to complete the
transfer. For resuming
both uploads and downloads, it relies on
examining the partially downloaded or uploaded file to see how many
bytes remain to be transferred. The remaining bytes are then appended
to the partial file. To perform a resume, simply upload or download the file again, supplying
the WriteMode.RESUME parameter.
Because
resuming relies only on the size of the partially downloaded or
uploaded file, it does not matter how long ago the transfer failed or
was terminated. As long as the partially transferred file is still
available (and of course the original file to be transferred
has not changed) , resuming the transfer will work correctly.