

Le AWS SDK pour Java 1.x a été atteint end-of-support le 31 décembre 2025. Nous vous recommandons de migrer vers le pour continuer [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html)à bénéficier des nouvelles fonctionnalités, des améliorations de disponibilité et des mises à jour de sécurité.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utilisation TransferManager pour les Amazon S3 opérations
<a name="examples-s3-transfermanager"></a>

Vous pouvez utiliser cette AWS SDK pour Java TransferManager classe pour transférer de manière fiable des fichiers de l'environnement local vers Amazon S3 et pour copier des objets d'un emplacement S3 à un autre. `TransferManager`peut suivre la progression d'un transfert et suspendre ou reprendre les chargements et les téléchargements.

**Note**  
Bonne pratique  
Nous vous recommandons d'activer la règle du [AbortIncompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlifecycle.html)cycle de vie sur vos Amazon S3 buckets.  
Cette règle indique Amazon S3 d'abandonner les téléchargements partitionnés qui ne sont pas terminés dans un certain nombre de jours après leur lancement. Lorsque le délai défini est dépassé, le téléchargement est Amazon S3 interrompu, puis les données de téléchargement incomplètes sont supprimées.  
Pour plus d'informations, consultez la section [Configuration du cycle de vie d'un bucket avec gestion des versions](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-bucket-with-versioning.html) dans le guide de l' Amazon S3 utilisateur.

**Note**  
Ces exemples de code supposent que vous comprenez le contenu de la section [Utilisation du AWS SDK pour Java et que vous avez configuré les](basics.md) AWS informations d'identification par défaut à l'aide des informations de [configuration des informations AWS d'identification et de la région pour le développement](setup-credentials.md).

## Chargement des fichiers et des répertoires
<a name="transfermanager-uploading"></a>

TransferManager peut télécharger des fichiers, des listes de fichiers et des répertoires dans tous les Amazon S3 compartiments que vous avez [créés précédemment](examples-s3-buckets.md#create-bucket).

**Topics**
+ [Chargement d'un seul fichier](#transfermanager-upload-file)
+ [Chargement d'une liste de fichiers](#transfermanager-upload-file-list)
+ [Charger un répertoire](#transfermanager-upload-directory)

### Chargement d'un seul fichier
<a name="transfermanager-upload-file"></a>

`upload`Méthode TransferManager de l'appel, fournissant un nom de Amazon S3 compartiment, un nom de clé (objet) et un objet Java [File](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html) standard qui représente le fichier à télécharger.

 **Importations** 

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.services.s3.transfer.MultipleFileUpload;
import com.amazonaws.services.s3.transfer.TransferManager;
import com.amazonaws.services.s3.transfer.TransferManagerBuilder;
import com.amazonaws.services.s3.transfer.Upload;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
```

 **Code** 

```
File f = new File(file_path);
TransferManager xfer_mgr = TransferManagerBuilder.standard().build();
try {
    Upload xfer = xfer_mgr.upload(bucket_name, key_name, f);
    // loop with Transfer.isDone()
    XferMgrProgress.showTransferProgress(xfer);
    //  or block with Transfer.waitForCompletion()
    XferMgrProgress.waitForCompletion(xfer);
} catch (AmazonServiceException e) {
    System.err.println(e.getErrorMessage());
    System.exit(1);
}
xfer_mgr.shutdownNow();
```

La méthode `upload` renvoie *immédiatement* un résultat, en fournissant un objet `Upload` à utiliser pour vérifier l'état du transfert ou attendre qu'il se termine.

Voir [Attendre la fin d'un transfert pour](#transfermanager-wait-for-completion) plus d'informations sur l'utilisation `waitForCompletion` de la `shutdownNow` méthode permettant de terminer un transfert avec succès avant TransferManager d'appeler. En attendant que le transfert se termine, vous pouvez interroger ou écouter les mises à jour relatives à son état et à sa progression. Pour plus d'informations, consultez [Obtention de l'état et de la progression du transfert](#transfermanager-get-status-and-progress).

Consultez l'[exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java) sur GitHub.

### Chargement d'une liste de fichiers
<a name="transfermanager-upload-file-list"></a>

Pour charger plusieurs fichiers en une seule opération, appelez la méthode `uploadFileList` de TransferManager, en fournissant les éléments suivants :
+ Un nom de Amazon S3 compartiment
+ Un *préfixe de clé* à ajouter devant les noms des objets créés (le chemin au sein du compartiment dans lequel placer les objets)
+ Un objet [File](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html) qui représente le répertoire relatif à partir duquel créer les chemins de fichier
+ Un objet [List](https://docs.oracle.com/javase/8/docs/api/index.html?java/util/List.html) contenant un ensemble d'objets [File](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html) à charger

 **Importations** 

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.services.s3.transfer.MultipleFileUpload;
import com.amazonaws.services.s3.transfer.TransferManager;
import com.amazonaws.services.s3.transfer.TransferManagerBuilder;
import com.amazonaws.services.s3.transfer.Upload;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
```

 **Code** 

```
ArrayList<File> files = new ArrayList<File>();
for (String path : file_paths) {
    files.add(new File(path));
}

TransferManager xfer_mgr = TransferManagerBuilder.standard().build();
try {
    MultipleFileUpload xfer = xfer_mgr.uploadFileList(bucket_name,
            key_prefix, new File("."), files);
    // loop with Transfer.isDone()
    XferMgrProgress.showTransferProgress(xfer);
    // or block with Transfer.waitForCompletion()
    XferMgrProgress.waitForCompletion(xfer);
} catch (AmazonServiceException e) {
    System.err.println(e.getErrorMessage());
    System.exit(1);
}
xfer_mgr.shutdownNow();
```

Voir [Attendre la fin d'un transfert pour](#transfermanager-wait-for-completion) plus d'informations sur l'utilisation `waitForCompletion` de la `shutdownNow` méthode permettant de terminer un transfert avec succès avant TransferManager d'appeler. En attendant que le transfert se termine, vous pouvez interroger ou écouter les mises à jour relatives à son état et à sa progression. Pour plus d'informations, consultez [Obtention de l'état et de la progression du transfert](#transfermanager-get-status-and-progress).

L'[MultipleFileUpload](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/MultipleFileUpload.html)objet renvoyé par `uploadFileList` peut être utilisé pour demander l'état ou la progression du transfert. Pour plus d'informations, consultez [les rubriques Sondage de la progression actuelle d'un transfert](#transfermanager-get-progress-polling) [et Obtenir la progression du transfert avec un ProgressListener](#transfermanager-progress-listener).

Vous pouvez aussi utiliser la méthode `MultipleFileUpload` de `getSubTransfers` pour obtenir les objets `Upload` individuels de chaque fichier transféré. Pour plus d'informations, consultez [Obtention de la progression des sous-transferts](#transfermanager-get-subtransfer-progress).

Consultez l'[exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java) sur GitHub.

### Charger un répertoire
<a name="transfermanager-upload-directory"></a>

Vous pouvez utiliser TransferManager la `uploadDirectory` méthode s pour télécharger un répertoire complet de fichiers, avec la possibilité de copier des fichiers dans des sous-répertoires de manière récursive. *Vous fournissez un nom de Amazon S3 compartiment, un préfixe de clé S3, un objet [File](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html) représentant le répertoire local à copier et une `boolean` valeur indiquant si vous souhaitez copier les sous-répertoires de manière récursive (*vrai* ou faux).*

 **Importations** 

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.services.s3.transfer.MultipleFileUpload;
import com.amazonaws.services.s3.transfer.TransferManager;
import com.amazonaws.services.s3.transfer.TransferManagerBuilder;
import com.amazonaws.services.s3.transfer.Upload;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
```

 **Code** 

```
TransferManager xfer_mgr = TransferManagerBuilder.standard().build();
try {
    MultipleFileUpload xfer = xfer_mgr.uploadDirectory(bucket_name,
            key_prefix, new File(dir_path), recursive);
    // loop with Transfer.isDone()
    XferMgrProgress.showTransferProgress(xfer);
    // or block with Transfer.waitForCompletion()
    XferMgrProgress.waitForCompletion(xfer);
} catch (AmazonServiceException e) {
    System.err.println(e.getErrorMessage());
    System.exit(1);
}
xfer_mgr.shutdownNow();
```

Voir [Attendre la fin d'un transfert pour](#transfermanager-wait-for-completion) plus d'informations sur l'utilisation `waitForCompletion` de la `shutdownNow` méthode permettant de terminer un transfert avec succès avant TransferManager d'appeler. En attendant que le transfert se termine, vous pouvez interroger ou écouter les mises à jour relatives à son état et à sa progression. Pour plus d'informations, consultez [Obtention de l'état et de la progression du transfert](#transfermanager-get-status-and-progress).

L'[MultipleFileUpload](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/MultipleFileUpload.html)objet renvoyé par `uploadFileList` peut être utilisé pour demander l'état ou la progression du transfert. Pour plus d'informations, consultez [les rubriques Sondage de la progression actuelle d'un transfert](#transfermanager-get-progress-polling) [et Obtenir la progression du transfert avec un ProgressListener](#transfermanager-progress-listener).

Vous pouvez aussi utiliser la méthode `MultipleFileUpload` de `getSubTransfers` pour obtenir les objets `Upload` individuels de chaque fichier transféré. Pour plus d'informations, consultez [Obtention de la progression des sous-transferts](#transfermanager-get-subtransfer-progress).

Consultez l'[exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java) sur GitHub.

## Téléchargement de fichiers ou de répertoires
<a name="transfermanager-downloading"></a>

Utilisez la TransferManager classe pour télécharger un seul fichier (Amazon S3 objet) ou un répertoire (un nom de Amazon S3 compartiment suivi d'un préfixe d'objet) depuis Amazon S3.

**Topics**
+ [Téléchargement d'un seul fichier](#transfermanager-download-file)
+ [Téléchargement d'un répertoire](#tranfermanager-download-directory)

### Téléchargement d'un seul fichier
<a name="transfermanager-download-file"></a>

Utilisez la `download` méthode TransferManager's, en fournissant le nom du Amazon S3 compartiment contenant l'objet que vous souhaitez télécharger, le nom de la clé (objet) et un objet [File](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html) qui représente le fichier à créer sur votre système local.

 **Importations** 

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.services.s3.transfer.Download;
import com.amazonaws.services.s3.transfer.MultipleFileDownload;
import com.amazonaws.services.s3.transfer.TransferManager;
import com.amazonaws.services.s3.transfer.TransferManagerBuilder;

import java.io.File;
```

 **Code** 

```
File f = new File(file_path);
TransferManager xfer_mgr = TransferManagerBuilder.standard().build();
try {
    Download xfer = xfer_mgr.download(bucket_name, key_name, f);
    // loop with Transfer.isDone()
    XferMgrProgress.showTransferProgress(xfer);
    // or block with Transfer.waitForCompletion()
    XferMgrProgress.waitForCompletion(xfer);
} catch (AmazonServiceException e) {
    System.err.println(e.getErrorMessage());
    System.exit(1);
}
xfer_mgr.shutdownNow();
```

Voir [Attendre la fin d'un transfert pour](#transfermanager-wait-for-completion) plus d'informations sur l'utilisation `waitForCompletion` de la `shutdownNow` méthode permettant de terminer un transfert avec succès avant TransferManager d'appeler. En attendant que le transfert se termine, vous pouvez interroger ou écouter les mises à jour relatives à son état et à sa progression. Pour plus d'informations, consultez [Obtention de l'état et de la progression du transfert](#transfermanager-get-status-and-progress).

Consultez l'[exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrDownload.java) sur GitHub.

### Téléchargement d'un répertoire
<a name="tranfermanager-download-directory"></a>

Pour télécharger un ensemble de fichiers partageant un préfixe de clé commun (analogue à un répertoire d'un système de fichiers) à partir de Amazon S3, utilisez cette méthode. TransferManager `downloadDirectory` La méthode utilise le nom du Amazon S3 compartiment contenant les objets que vous souhaitez télécharger, le préfixe d'objet partagé par tous les objets et un objet [File](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html) qui représente le répertoire dans lequel télécharger les fichiers sur votre système local. Si le répertoire nommé n'existe pas encore, il est créé.

 **Importations** 

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.services.s3.transfer.Download;
import com.amazonaws.services.s3.transfer.MultipleFileDownload;
import com.amazonaws.services.s3.transfer.TransferManager;
import com.amazonaws.services.s3.transfer.TransferManagerBuilder;

import java.io.File;
```

 **Code** 

```
TransferManager xfer_mgr = TransferManagerBuilder.standard().build();

try {
    MultipleFileDownload xfer = xfer_mgr.downloadDirectory(
            bucket_name, key_prefix, new File(dir_path));
    // loop with Transfer.isDone()
    XferMgrProgress.showTransferProgress(xfer);
    // or block with Transfer.waitForCompletion()
    XferMgrProgress.waitForCompletion(xfer);
} catch (AmazonServiceException e) {
    System.err.println(e.getErrorMessage());
    System.exit(1);
}
xfer_mgr.shutdownNow();
```

Voir [Attendre la fin d'un transfert pour](#transfermanager-wait-for-completion) plus d'informations sur l'utilisation `waitForCompletion` de la `shutdownNow` méthode permettant de terminer un transfert avec succès avant TransferManager d'appeler. En attendant que le transfert se termine, vous pouvez interroger ou écouter les mises à jour relatives à son état et à sa progression. Pour plus d'informations, consultez [Obtention de l'état et de la progression du transfert](#transfermanager-get-status-and-progress).

Consultez l'[exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrDownload.java) sur GitHub.

## Copie d'objets
<a name="transfermanager-copy-object"></a>

Pour copier un objet d'un compartiment S3 vers un autre, utilisez la méthode `copy` de TransferManager.

 **Importations** 

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.services.s3.transfer.Copy;
import com.amazonaws.services.s3.transfer.TransferManager;
import com.amazonaws.services.s3.transfer.TransferManagerBuilder;
```

 **Code** 

```
System.out.println("Copying s3 object: " + from_key);
System.out.println("      from bucket: " + from_bucket);
System.out.println("     to s3 object: " + to_key);
System.out.println("        in bucket: " + to_bucket);

TransferManager xfer_mgr = TransferManagerBuilder.standard().build();
try {
    Copy xfer = xfer_mgr.copy(from_bucket, from_key, to_bucket, to_key);
    // loop with Transfer.isDone()
    XferMgrProgress.showTransferProgress(xfer);
    // or block with Transfer.waitForCompletion()
    XferMgrProgress.waitForCompletion(xfer);
} catch (AmazonServiceException e) {
    System.err.println(e.getErrorMessage());
    System.exit(1);
}
xfer_mgr.shutdownNow();
```

Consultez l'[exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrCopy.java) sur GitHub.

## Attente de la fin d'un transfert
<a name="transfermanager-wait-for-completion"></a>

Si votre application (ou thread) peut bloquer jusqu'à ce que le transfert soit terminé, vous pouvez utiliser la `waitForCompletion` méthode de l'interface de [transfert](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/Transfer.html) pour bloquer jusqu'à ce que le transfert soit terminé ou qu'une exception se produise.

```
try {
    xfer.waitForCompletion();
} catch (AmazonServiceException e) {
    System.err.println("Amazon service error: " + e.getMessage());
    System.exit(1);
} catch (AmazonClientException e) {
    System.err.println("Amazon client error: " + e.getMessage());
    System.exit(1);
} catch (InterruptedException e) {
    System.err.println("Transfer interrupted: " + e.getMessage());
    System.exit(1);
}
```

Vous pouvez obtenir la progression des transferts si vous interrogez les événements *avant* d'appeler`waitForCompletion`, si vous implémentez un mécanisme de sondage sur un thread distinct ou si vous recevez des mises à jour de progression de manière asynchrone à l'aide d'un. [ProgressListener](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/event/ProgressListener.html)

Consultez l'[exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java) sur GitHub.

## Obtention de l'état et de la progression du transfert
<a name="transfermanager-get-status-and-progress"></a>

Chacune des classes renvoyées par les `copy` méthodes TransferManager`upload*`,`download*`, et renvoie une instance de l'une des classes suivantes, selon qu'il s'agit d'une opération à fichier unique ou à fichiers multiples.


**​**  

| Classe | Renvoyée par | 
| --- | --- | 
|   [Copy](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/Copy.html)   |   `copy`   | 
|   [Download](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/Download.html)   |   `download`   | 
|   [MultipleFileDownload](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/MultipleFileDownload.html)   |   `downloadDirectory`   | 
|   [Charger](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/Upload.html)   |   `upload`   | 
|   [MultipleFileUpload](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/MultipleFileUpload.html)   |   `uploadFileList`, `uploadDirectory`   | 

Toutes ces classes implémentent l'interface [Transfer](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/Transfer.html). `Transfer` fournit des méthodes utiles pour obtenir la progression d'un transfert, suspendre ou reprendre le transfert, et obtenir l'état actuel ou final du transfert.

**Topics**
+ [Interrogation de la progression en cours d'un transfert](#transfermanager-get-progress-polling)
+ [Suivez la progression du transfert grâce à ProgressListener](#transfermanager-progress-listener)
+ [Obtention de la progression des sous-transferts](#transfermanager-get-subtransfer-progress)

### Interrogation de la progression en cours d'un transfert
<a name="transfermanager-get-progress-polling"></a>

Cette boucle imprime la progression d'un transfert, examine sa progression en cours lors de l'exécution et, une fois le transfert terminé, imprime son état final.

 **Importations** 

```
import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.event.ProgressEvent;
import com.amazonaws.event.ProgressListener;
import com.amazonaws.services.s3.transfer.*;
import com.amazonaws.services.s3.transfer.Transfer.TransferState;

import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
```

 **Code** 

```
// print the transfer's human-readable description
System.out.println(xfer.getDescription());
// print an empty progress bar...
printProgressBar(0.0);
// update the progress bar while the xfer is ongoing.
do {
    try {
        Thread.sleep(100);
    } catch (InterruptedException e) {
        return;
    }
    // Note: so_far and total aren't used, they're just for
    // documentation purposes.
    TransferProgress progress = xfer.getProgress();
    long so_far = progress.getBytesTransferred();
    long total = progress.getTotalBytesToTransfer();
    double pct = progress.getPercentTransferred();
    eraseProgressBar();
    printProgressBar(pct);
} while (xfer.isDone() == false);
// print the final state of the transfer.
TransferState xfer_state = xfer.getState();
System.out.println(": " + xfer_state);
```

Consultez l'[exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java) sur GitHub.

### Suivez la progression du transfert grâce à ProgressListener
<a name="transfermanager-progress-listener"></a>

Vous pouvez joindre un [ProgressListener](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/event/ProgressListener.html)à n'importe quel transfert en utilisant la `addProgressListener` méthode de l'interface de [transfert](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/Transfer.html).

A ne [ProgressListener](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/event/ProgressListener.html)nécessite qu'une seule méthode`progressChanged`, qui prend un [ProgressEvent](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/event/ProgressEvent.html)objet. Vous pouvez utiliser l'objet pour obtenir le nombre total d'octets de l'opération en appelant sa méthode `getBytes`, ainsi que le nombre d'octets transférés jusqu'à présent en appelant `getBytesTransferred`.

 **Importations** 

```
import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.event.ProgressEvent;
import com.amazonaws.event.ProgressListener;
import com.amazonaws.services.s3.transfer.*;
import com.amazonaws.services.s3.transfer.Transfer.TransferState;

import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
```

 **Code** 

```
File f = new File(file_path);
TransferManager xfer_mgr = TransferManagerBuilder.standard().build();
try {
    Upload u = xfer_mgr.upload(bucket_name, key_name, f);
    // print an empty progress bar...
    printProgressBar(0.0);
    u.addProgressListener(new ProgressListener() {
        public void progressChanged(ProgressEvent e) {
            double pct = e.getBytesTransferred() * 100.0 / e.getBytes();
            eraseProgressBar();
            printProgressBar(pct);
        }
    });
    // block with Transfer.waitForCompletion()
    XferMgrProgress.waitForCompletion(u);
    // print the final state of the transfer.
    TransferState xfer_state = u.getState();
    System.out.println(": " + xfer_state);
} catch (AmazonServiceException e) {
    System.err.println(e.getErrorMessage());
    System.exit(1);
}
xfer_mgr.shutdownNow();
```

Consultez l'[exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java) sur GitHub.

### Obtention de la progression des sous-transferts
<a name="transfermanager-get-subtransfer-progress"></a>

La [MultipleFileUpload](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/MultipleFileUpload.html)classe peut renvoyer des informations sur ses sous-transferts en appelant sa `getSubTransfers` méthode. Il renvoie une [collection](https://docs.oracle.com/javase/8/docs/api/index.html?java/util/Collection.html) non modifiable d'objets [Upload](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/Upload.html) qui fournissent le statut individuel du transfert et la progression de chaque sous-transfert.

 **Importations** 

```
import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.event.ProgressEvent;
import com.amazonaws.event.ProgressListener;
import com.amazonaws.services.s3.transfer.*;
import com.amazonaws.services.s3.transfer.Transfer.TransferState;

import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
```

 **Code** 

```
Collection<? extends Upload> sub_xfers = new ArrayList<Upload>();
sub_xfers = multi_upload.getSubTransfers();

do {
    System.out.println("\nSubtransfer progress:\n");
    for (Upload u : sub_xfers) {
        System.out.println("  " + u.getDescription());
        if (u.isDone()) {
            TransferState xfer_state = u.getState();
            System.out.println("  " + xfer_state);
        } else {
            TransferProgress progress = u.getProgress();
            double pct = progress.getPercentTransferred();
            printProgressBar(pct);
            System.out.println();
        }
    }

    // wait a bit before the next update.
    try {
        Thread.sleep(200);
    } catch (InterruptedException e) {
        return;
    }
} while (multi_upload.isDone() == false);
// print the final state of the transfer.
TransferState xfer_state = multi_upload.getState();
System.out.println("\nMultipleFileUpload " + xfer_state);
```

Consultez l'[exemple complet](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java) sur GitHub.

## Plus d'informations
<a name="transfermanager-see-also"></a>
+  [Clés d'objet](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html) dans le guide de Amazon Simple Storage Service l'utilisateur