public class TransferManager extends Object
TransferManager provides a simple API for uploading content to Qcloud COS, and makes
extensive use of Qcloud COS multipart uploads to achieve enhanced throughput, performance and
reliability.
When possible, TransferManager attempts to use multiple threads to upload multiple
parts of a single upload at once. When dealing with large content sizes and high bandwidth, this
can have a significant increase on throughput.
TransferManager is responsible for managing resources such as connections and
threads; share a single instance of TransferManager whenever possible.
TransferManager, like all the client classes in the COS SDK for Java, is thread
safe. Call TransferManager.shutdownNow() to release the resources once the transfer
is complete.
Using TransferManager to upload options to Qcloud COS is easy:
DefaultCOSCredentialsProviderChain credentialProviderChain =
new DefaultCOSCredentialsProviderChain();
TransferManager tx = new TransferManager(credentialProviderChain.getCredentials());
Upload myUpload = tx.upload(myBucket, myFile.getName(), myFile);
// You can poll your transfer's status to check its progress
if (myUpload.isDone() == false) {
System.out.println("Transfer: " + myUpload.getDescription());
System.out.println(" - State: " + myUpload.getState());
System.out.println(" - Progress: " + myUpload.getProgress().getBytesTransferred());
}
// Transfers also allow you to set a <code>ProgressListener</code> to receive
// asynchronous notifications about your transfer's progress.
myUpload.addProgressListener(myProgressListener);
// Or you can block the current thread and wait for your transfer to
// to complete. If the transfer fails, this method will throw an
// CosClientException or CosServiceException detailing the reason.
myUpload.waitForCompletion();
// After the upload is complete, call shutdownNow to release the resources.
tx.shutdownNow();
Transfers can be paused and resumed at a later time. It can also survive JVM crash, provided the information that is required to resume the transfer is given as input to the resume operation. For more information on pause and resume,
| 构造器和说明 |
|---|
TransferManager(COS cos)
Constructs a new
TransferManager, specifying the client to use when making
requests to Qcloud COS. |
TransferManager(COS cos,
ExecutorService threadPool)
Constructs a new
TransferManager specifying the client and thread pool to use
when making requests to Qcloud COS. |
TransferManager(COS cos,
ExecutorService threadPool,
boolean shutDownThreadPools)
Constructs a new
TransferManager specifying the client and thread pool to use
when making requests to Qcloud COS. |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
abortMultipartUploads(String bucketName,
Date date)
Aborts any multipart uploads that were initiated before the specified date.
|
static <X extends CosServiceRequest> |
appendMultipartUserAgent(X request) |
static <X extends CosServiceRequest> |
appendSingleObjectUserAgent(X request) |
Copy |
copy(CopyObjectRequest copyObjectRequest)
Schedules a new transfer to copy data from one object to another .
|
Copy |
copy(CopyObjectRequest copyObjectRequest,
COS srcCOS,
TransferStateChangeListener stateChangeListener)
Schedules a new transfer to copy data from one object to another .
|
Copy |
copy(CopyObjectRequest copyObjectRequest,
TransferStateChangeListener stateChangeListener)
Schedules a new transfer to copy data from one object to another .
|
Copy |
copy(String sourceBucketName,
String sourceKey,
String destinationBucketName,
String destinationKey)
Schedules a new transfer to copy data.
|
Download |
download(GetObjectRequest getObjectRequest,
File file)
Schedules a new transfer to download data from Qcloud COS and save it to the specified file.
|
Download |
download(GetObjectRequest getObjectRequest,
File file,
boolean resumableDownload) |
Download |
download(GetObjectRequest getObjectRequest,
File file,
boolean resumableDownload,
String resumableTaskFile,
int multiThreadThreshold,
int partSize) |
Download |
download(GetObjectRequest getObjectRequest,
File file,
COSProgressListener progressListener)
Schedules a new transfer to download data from Qcloud COS and save it to the specified file.
|
Download |
download(GetObjectRequest getObjectRequest,
File file,
COSProgressListener progressListener,
boolean resumableDownload) |
Download |
download(GetObjectRequest getObjectRequest,
File file,
COSProgressListener progressListener,
boolean resumableDownload,
String resumableTaskFile,
int multiThreadThreshold,
int partSize) |
Download |
download(String bucket,
String key,
File file)
Schedules a new transfer to download data from Qcloud COS and save it to the specified file.
|
MultipleFileDownload |
downloadDirectory(String bucketName,
String keyPrefix,
File destinationDirectory)
Downloads all objects in the virtual directory designated by the keyPrefix given to the
destination directory given.
|
protected void |
finalize()
Releasing all resources created by
TransferManager before it is being garbage
collected. |
TransferManagerConfiguration |
getConfiguration()
Returns the configuration which specifies how this
TransferManager processes
requests. |
COS |
getCOSClient()
Returns the underlying Qcloud COS client used to make requests to Qcloud COS.
|
Download |
resumeDownload(PersistableDownload persistableDownload)
Resumes an download operation.
|
Upload |
resumeUpload(PersistableUpload persistableUpload)
Resumes an upload operation.
|
void |
setConfiguration(TransferManagerConfiguration configuration)
Sets the configuration which specifies how this
TransferManager processes
requests. |
void |
shutdownNow()
Forcefully shuts down this TransferManager instance - currently executing transfers will not
be allowed to finish.
|
void |
shutdownNow(boolean shutDownCOSClient)
Forcefully shuts down this TransferManager instance - currently executing transfers will not
be allowed to finish.
|
Upload |
upload(PutObjectRequest putObjectRequest)
Schedules a new transfer to upload data to Qcloud COS.
|
Upload |
upload(PutObjectRequest putObjectRequest,
COSProgressListener progressListener)
Schedules a new transfer to upload data to Qcloud COS.
|
Upload |
upload(String bucketName,
String key,
File file)
Schedules a new transfer to upload data to Qcloud COS.
|
Upload |
upload(String bucketName,
String key,
InputStream input,
ObjectMetadata objectMetadata)
Schedules a new transfer to upload data to Qcloud COS.
|
MultipleFileUpload |
uploadDirectory(String bucketName,
String virtualDirectoryKeyPrefix,
File directory,
boolean includeSubdirectories)
Uploads all files in the directory given to the bucket named, optionally recursing for all
subdirectories.
|
MultipleFileUpload |
uploadDirectory(String bucketName,
String virtualDirectoryKeyPrefix,
File directory,
boolean includeSubdirectories,
ObjectMetadataProvider metadataProvider)
Uploads all files in the directory given to the bucket named, optionally recursing for all
subdirectories.
|
MultipleFileUpload |
uploadFileList(String bucketName,
String virtualDirectoryKeyPrefix,
File directory,
List<File> files)
Uploads all specified files to the bucket named, constructing relative keys depending on the
commonParentDirectory given.
|
MultipleFileUpload |
uploadFileList(String bucketName,
String virtualDirectoryKeyPrefix,
File directory,
List<File> files,
ObjectMetadataProvider metadataProvider)
Uploads all specified files to the bucket named, constructing relative keys depending on the
commonParentDirectory given.
|
public TransferManager(COS cos)
TransferManager, specifying the client to use when making
requests to Qcloud COS.
TransferManager and client objects may pool connections and threads. Reuse
TransferManager and client objects and share them throughout applications.
TransferManager and all COS client objects are thread safe.
cos - The client to use when making requests to Qcloud COS.public TransferManager(COS cos, ExecutorService threadPool)
TransferManager specifying the client and thread pool to use
when making requests to Qcloud COS.
TransferManager and client objects may pool connections and threads. Reuse
TransferManager and client objects and share them throughout applications.
TransferManager and all COS client objects are thread safe.
By default, the thread pool will shutdown when the transfer manager instance is garbage collected.
cos - The client to use when making requests to Qcloud COS.threadPool - The thread pool in which to execute requests.TransferManager(COS cos, ExecutorService threadPool, boolean
shutDownThreadPools)public TransferManager(COS cos, ExecutorService threadPool, boolean shutDownThreadPools)
TransferManager specifying the client and thread pool to use
when making requests to Qcloud COS.
TransferManager and client objects may pool connections and threads. Reuse
TransferManager and client objects and share them throughout applications.
TransferManager and all COS client objects are thread safe.
cos - The client to use when making requests to Qcloud COS.threadPool - The thread pool in which to execute requests.shutDownThreadPools - If set to true, the thread pool will be shutdown when transfer
manager instance is garbage collected.public void setConfiguration(TransferManagerConfiguration configuration)
TransferManager processes
requests.configuration - The new configuration specifying how this TransferManager
processes requests.public TransferManagerConfiguration getConfiguration()
TransferManager processes
requests.TransferManager.public COS getCOSClient()
public Upload upload(String bucketName, String key, InputStream input, ObjectMetadata objectMetadata) throws CosServiceException, CosClientException
Schedules a new transfer to upload data to Qcloud COS. This method is non-blocking and returns immediately (i.e. before the upload has finished).
When uploading options from a stream, callers must supply the size of options in the
stream through the content length field in the ObjectMetadata parameter. If no
content length is specified for the input stream, then TransferManager will attempt to buffer
all the stream contents in memory and upload the options as a traditional, single part
upload. Because the entire stream contents must be buffered in memory, this can be very
expensive, and should be avoided whenever possible.
Use the returned Upload object to query the progress of the transfer, add
listeners for progress events, and wait for the upload to complete.
If resources are available, the upload will begin immediately. Otherwise, the upload is scheduled and started as soon as resources become available.
bucketName - The name of the bucket to upload the new object to.key - The key in the specified bucket by which to store the new object.input - The input stream containing the options to upload to Qcloud COS.objectMetadata - Additional information about the object being uploaded, including the
size of the options, content type, additional custom user metadata, etc.Upload object to use to check the state of the upload, listen for
progress notifications, and otherwise manage the upload.CosClientException - If any errors are encountered in the client while making the
request or handling the response.CosServiceException - If any errors occurred in Qcloud COS while processing the
request.public Upload upload(String bucketName, String key, File file) throws CosServiceException, CosClientException
The returned Upload object allows you to query the progress of the transfer, add listeners for progress events, and wait for the upload to complete.
If resources are available, the upload will begin immediately, otherwise it will be scheduled and started as soon as resources become available.bucketName - The name of the bucket to upload the new object to.key - The key in the specified bucket by which to store the new object.file - The file to upload.CosClientException - If any errors are encountered in the client while making the
request or handling the response.CosServiceException - If any errors occurred in Qcloud COS while processing the
request.public Upload upload(PutObjectRequest putObjectRequest) throws CosServiceException, CosClientException
Schedules a new transfer to upload data to Qcloud COS. This method is non-blocking and returns immediately (i.e. before the upload has finished).
Use the returned Upload object to query the progress of the transfer, add
listeners for progress events, and wait for the upload to complete.
If resources are available, the upload will begin immediately. Otherwise, the upload is scheduled and started as soon as resources become available.
putObjectRequest - The request containing all the parameters for the upload.Upload object to use to check the state of the upload, listen for
progress notifications, and otherwise manage the upload.CosClientException - If any errors are encountered in the client while making the
request or handling the response.CosServiceException - If any errors occurred in Qcloud COS while processing the
request.public Upload upload(PutObjectRequest putObjectRequest, COSProgressListener progressListener) throws CosServiceException, CosClientException
Schedules a new transfer to upload data to Qcloud COS. This method is non-blocking and returns immediately (i.e. before the upload has finished).
Use the returned Upload object to query the progress of the transfer, add
listeners for progress events, and wait for the upload to complete.
If resources are available, the upload will begin immediately. Otherwise, the upload is scheduled and started as soon as resources become available.
putObjectRequest - The request containing all the parameters for the upload.progressListener - An optional callback listener to receive the progress of the upload.Upload object to use to check the state of the upload, listen for
progress notifications, and otherwise manage the upload.CosClientException - If any errors are encountered in the client while making the
request or handling the response.CosServiceException - If any errors occurred in Qcloud COS while processing the
request.public Download download(String bucket, String key, File file)
Use the returned Download object to query the progress of the transfer, add listeners for progress events, and wait for the download to complete.
bucket - The name of the bucket containing the object to download.key - The key under which the object to download is stored.file - The file to download the object's data to.Download object to use to check the state of the download, listen
for progress notifications, and otherwise manage the download.CosClientException - If any errors are encountered in the client while making the
request or handling the response.CosServiceException - If any errors occurred in Qcloud COS while processing the
request.public Download download(GetObjectRequest getObjectRequest, File file)
Use the returned Download object to query the progress of the transfer, add listeners for progress events, and wait for the download to complete.
getObjectRequest - The request containing all the parameters for the download.file - The file to download the object data to.Download object to use to check the state of the download, listen
for progress notifications, and otherwise manage the download.CosClientException - If any errors are encountered in the client while making the
request or handling the response.CosServiceException - If any errors occurred in Qcloud COS while processing the
request.public Download download(GetObjectRequest getObjectRequest, File file, COSProgressListener progressListener)
Use the returned Download object to query the progress of the transfer, add listeners for progress events, and wait for the download to complete.
getObjectRequest - The request containing all the parameters for the download.file - The file to download the object data to.progressListener - An optional callback listener to get the progress of the download.Download object to use to check the state of the download, listen
for progress notifications, and otherwise manage the download.CosClientException - If any errors are encountered in the client while making the
request or handling the response.CosServiceException - If any errors occurred in Qcloud COS while processing the
request.public Download download(GetObjectRequest getObjectRequest, File file, boolean resumableDownload)
public Download download(GetObjectRequest getObjectRequest, File file, COSProgressListener progressListener, boolean resumableDownload)
public Download download(GetObjectRequest getObjectRequest, File file, boolean resumableDownload, String resumableTaskFile, int multiThreadThreshold, int partSize)
public Download download(GetObjectRequest getObjectRequest, File file, COSProgressListener progressListener, boolean resumableDownload, String resumableTaskFile, int multiThreadThreshold, int partSize)
public MultipleFileDownload downloadDirectory(String bucketName, String keyPrefix, File destinationDirectory)
bucketName - The bucket containing the virtual directorykeyPrefix - The key prefix for the virtual directory, or null for the entire bucket. All
subdirectories will be downloaded recursively.destinationDirectory - The directory to place downloaded files. Subdirectories will be
created as necessary.public MultipleFileUpload uploadDirectory(String bucketName, String virtualDirectoryKeyPrefix, File directory, boolean includeSubdirectories)
COS will overwrite any existing objects that happen to have the same key, just as when uploading individual files, so use with caution.
bucketName - The name of the bucket to upload objects to.virtualDirectoryKeyPrefix - The key prefix of the virtual directory to upload to. Use
the null or empty string to upload files to the root of the bucket.directory - The directory to upload.includeSubdirectories - Whether to include subdirectories in the upload. If true, files
found in subdirectories will be included with an appropriate concatenation to the key
prefix.public MultipleFileUpload uploadDirectory(String bucketName, String virtualDirectoryKeyPrefix, File directory, boolean includeSubdirectories, ObjectMetadataProvider metadataProvider)
COS will overwrite any existing objects that happen to have the same key, just as when uploading individual files, so use with caution.
bucketName - The name of the bucket to upload objects to.virtualDirectoryKeyPrefix - The key prefix of the virtual directory to upload to. Use
the null or empty string to upload files to the root of the bucket.directory - The directory to upload.includeSubdirectories - Whether to include subdirectories in the upload. If true, files
found in subdirectories will be included with an appropriate concatenation to the key
prefix.metadataProvider - A callback of type ObjectMetadataProvider which is used
to provide metadata for each file being uploaded.public MultipleFileUpload uploadFileList(String bucketName, String virtualDirectoryKeyPrefix, File directory, List<File> files)
COS will overwrite any existing objects that happen to have the same key, just as when uploading individual files, so use with caution.
bucketName - The name of the bucket to upload objects to.virtualDirectoryKeyPrefix - The key prefix of the virtual directory to upload to. Use
the null or empty string to upload files to the root of the bucket.directory - The common parent directory of files to upload. The keys of the files in the
list of files are constructed relative to this directory and the
virtualDirectoryKeyPrefix.files - A list of files to upload. The keys of the files are calculated relative to the
common parent directory and the virtualDirectoryKeyPrefix.public MultipleFileUpload uploadFileList(String bucketName, String virtualDirectoryKeyPrefix, File directory, List<File> files, ObjectMetadataProvider metadataProvider)
COS will overwrite any existing objects that happen to have the same key, just as when uploading individual files, so use with caution.
bucketName - The name of the bucket to upload objects to.virtualDirectoryKeyPrefix - The key prefix of the virtual directory to upload to. Use
the null or empty string to upload files to the root of the bucket.directory - The common parent directory of files to upload. The keys of the files in the
list of files are constructed relative to this directory and the
virtualDirectoryKeyPrefix.files - A list of files to upload. The keys of the files are calculated relative to the
common parent directory and the virtualDirectoryKeyPrefix.metadataProvider - A callback of type ObjectMetadataProvider which is used
to provide metadata for each file being uploaded.public void abortMultipartUploads(String bucketName, Date date) throws CosServiceException, CosClientException
Aborts any multipart uploads that were initiated before the specified date.
This method is useful for cleaning up any interrupted multipart uploads.
TransferManager attempts to abort any failed uploads, but in some cases this may
not be possible, such as if network connectivity is completely lost.
bucketName - The name of the bucket containing the multipart uploads to abort.date - The date indicating which multipart uploads should be aborted.CosServiceExceptionCosClientExceptionpublic void shutdownNow()
shutdownNow(boolean)public void shutdownNow(boolean shutDownCOSClient)
Callers should also remember that uploaded parts from an interrupted upload may not always be
automatically cleaned up, but callers can use abortMultipartUploads(String, Date) to
clean up any upload parts.
shutDownCOSClient - Whether to shut down the underlying Qcloud COS client.public static <X extends CosServiceRequest> X appendSingleObjectUserAgent(X request)
public static <X extends CosServiceRequest> X appendMultipartUserAgent(X request)
public Upload resumeUpload(PersistableUpload persistableUpload)
TransferManagerConfiguration as the original upload. Any data already uploaded will
be skipped, and only the remaining will be uploaded to Qcloud COS.persistableUpload - the upload to resume.Upload object to use to check the state of the upload, listen for
progress notifications, and otherwise manage the upload.CosClientException - If any errors are encountered in the client while making the
request or handling the response.CosServiceException - If any errors occurred in Qcloud COS while processing the
request.public Download resumeDownload(PersistableDownload persistableDownload)
persistableDownload - the download to resume.Download object to use to check the state of the download, listen
for progress notifications, and otherwise manage the download.CosClientException - If any errors are encountered in the client while making the
request or handling the response.CosServiceException - If any errors occurred in Qcloud COS while processing the
request.public Copy copy(String sourceBucketName, String sourceKey, String destinationBucketName, String destinationKey) throws CosServiceException, CosClientException
Schedules a new transfer to copy data. This method is non-blocking and returns immediately (before the copy has finished).
TransferManager doesn't support copying of encrypted objects whose encryption
materials are stored in an instruction file.
Use the returned Copy object to check if the copy is complete.
If resources are available, the copy request will begin immediately. Otherwise, the copy is scheduled and started as soon as resources become available.
Note: If the TransferManager is created with a regional COS client and the
source & destination buckets are in different regions, use the
copy(CopyObjectRequest, COS, TransferStateChangeListener) method.
sourceBucketName - The name of the bucket from where the object is to be copied.sourceKey - The name of the COS object.destinationBucketName - The name of the bucket to where the COS object has to be copied.destinationKey - The name of the object in the destination bucket.Copy object to use to check the state of the copy request being
processed.CosClientException - If any errors are encountered in the client while making the
request or handling the response.CosServiceException - If any errors occurred in Qcloud COS while processing the
request.copy(CopyObjectRequest, COS, TransferStateChangeListener)public Copy copy(CopyObjectRequest copyObjectRequest)
Schedules a new transfer to copy data from one object to another . This method is non-blocking and returns immediately (i.e. before the copy has finished).
TransferManager doesn't support copying of encrypted objects whose encryption
materials are stored in an instruction file.
Use the returned Copy object to check if the copy is complete.
If resources are available, the copy request will begin immediately. Otherwise, the copy is scheduled and started as soon as resources become available.
Note: If the TransferManager is created with a regional COS client and the
source & destination buckets are in different regions, use the
copy(CopyObjectRequest, COS, TransferStateChangeListener) method.
copyObjectRequest - The request containing all the parameters for the copy.Copy object to use to check the state of the copy request being
processed.CosClientException - If any errors are encountered in the client while making the
request or handling the response.CosServiceException - If any errors occurred in Qcloud COS while processing the
request.copy(CopyObjectRequest, COS, TransferStateChangeListener)public Copy copy(CopyObjectRequest copyObjectRequest, TransferStateChangeListener stateChangeListener) throws CosClientException, CosServiceException
Schedules a new transfer to copy data from one object to another . This method is non-blocking and returns immediately (i.e. before the copy has finished).
TransferManager doesn't support copying of encrypted objects whose encryption
materials are stored in an instruction file.
Use the returned Copy object to check if the copy is complete.
If resources are available, the copy request will begin immediately. Otherwise, the copy is scheduled and started as soon as resources become available.
Note: If the TransferManager is created with a regional COS client and the
source & destination buckets are in different regions, use the
copy(CopyObjectRequest, COS, TransferStateChangeListener) method.
copyObjectRequest - The request containing all the parameters for the copy.stateChangeListener - The transfer state change listener to monitor the copy requestCopy object to use to check the state of the copy request being
processed.CosClientException - If any errors are encountered in the client while making the
request or handling the response.CosServiceException - If any errors occurred in Qcloud COS while processing the
request.copy(CopyObjectRequest, COS, TransferStateChangeListener)public Copy copy(CopyObjectRequest copyObjectRequest, COS srcCOS, TransferStateChangeListener stateChangeListener) throws CosServiceException, CosClientException
Schedules a new transfer to copy data from one object to another . This method is non-blocking and returns immediately (i.e. before the copy has finished).
Note: You need to use this method if the TransferManager is created with a regional
COS client and the source & destination buckets are in different regions.
TransferManager doesn't support copying of encrypted objects whose encryption
materials are stored in an instruction file.
Use the returned Copy object to check if the copy is complete.
If resources are available, the copy request will begin immediately. Otherwise, the copy is scheduled and started as soon as resources become available.
Note: If the TransferManager is created with a regional COS client and the
source & destination buckets are in different regions, use the
copy(CopyObjectRequest, COS, TransferStateChangeListener) method.
copyObjectRequest - The request containing all the parameters for the copy.srcCOS - An COS client constructed for the region in which the source object's bucket is
located.stateChangeListener - The transfer state change listener to monitor the copy requestCopy object to use to check the state of the copy request being
processed.CosClientException - If any errors are encountered in the client while making the
request or handling the response.CosServiceException - If any errors occurred in Qcloud COS while processing the
request.Copyright © 2021. All rights reserved.