

La AWS SDK per Java 1.x è stata raggiunta end-of-support il 31 dicembre 2025. Ti consigliamo di eseguire la migrazione a per continuare [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html)a ricevere nuove funzionalità, miglioramenti della disponibilità e aggiornamenti di sicurezza.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo TransferManager per Amazon S3 le operazioni
<a name="examples-s3-transfermanager"></a>

È possibile utilizzare la AWS SDK per Java TransferManager classe per trasferire in modo affidabile file dall'ambiente locale Amazon S3 e copiare oggetti da una posizione S3 a un'altra. `TransferManager`può visualizzare lo stato di avanzamento di un trasferimento e mettere in pausa o riprendere i caricamenti e i download.

**Nota**  
Best practice  
Ti consigliamo di abilitare la regola del [AbortIncompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlifecycle.html)ciclo di vita nei tuoi bucket. Amazon S3   
Questa regola impone di interrompere Amazon S3 i caricamenti in più parti che non vengono completati entro un determinato numero di giorni dall'avvio. Quando viene superato il limite di tempo impostato, Amazon S3 interrompe il caricamento e quindi elimina i dati di caricamento incompleti.  
Per ulteriori informazioni, consulta [Lifecycle Configuration for a Bucket with Versioning nella Guida per](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-bucket-with-versioning.html) l'utente. Amazon S3 

**Nota**  
Questi esempi di codice presuppongono che tu abbia compreso il materiale contenuto in [Using the AWS SDK per Java](basics.md) e che tu abbia configurato AWS le credenziali predefinite utilizzando le informazioni contenute in [Configurazione delle AWS credenziali](setup-credentials.md) e Area per lo sviluppo.

## Carica file e directory
<a name="transfermanager-uploading"></a>

TransferManager [puoi caricare file, elenchi di file e directory in qualsiasi Amazon S3 bucket che hai creato in precedenza.](examples-s3-buckets.md#create-bucket)

**Topics**
+ [Carica un singolo file](#transfermanager-upload-file)
+ [Carica un elenco di file](#transfermanager-upload-file-list)
+ [Carica una directory](#transfermanager-upload-directory)

### Carica un singolo file
<a name="transfermanager-upload-file"></a>

 TransferManagerIl `upload` metodo di Call, che fornisce un nome di Amazon S3 bucket, un nome di chiave (oggetto) e un oggetto Java [File](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html) standard che rappresenta il file da caricare.

 **Importazioni** 

```
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;
```

 **Codice** 

```
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();
```

Il `upload` metodo ritorna *immediatamente*, fornendo un `Upload` oggetto da utilizzare per controllare lo stato del trasferimento o per attendere il completamento.

Vedi [Attendi il completamento di un trasferimento](#transfermanager-wait-for-completion) per informazioni sull'utilizzo del `shutdownNow` metodo `waitForCompletion` per completare correttamente un trasferimento prima TransferManager di chiamare. In attesa del completamento del trasferimento, puoi interrogare o ascoltare gli aggiornamenti sullo stato e sui progressi del trasferimento. Per ulteriori informazioni, consulta [Ottieni lo stato e l'avanzamento del trasferimento](#transfermanager-get-status-and-progress).

Guarda l'[esempio completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java) su GitHub.

### Carica un elenco di file
<a name="transfermanager-upload-file-list"></a>

Per caricare più file in un'unica operazione, chiamate il TransferManager `uploadFileList` metodo, fornendo quanto segue:
+ Un nome di Amazon S3 bucket
+ Un *prefisso chiave* da aggiungere ai nomi degli oggetti creati (il percorso all'interno del bucket in cui posizionare gli oggetti)
+ Un oggetto [File](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html) che rappresenta la directory relativa da cui creare i percorsi dei file
+ Un oggetto [List](https://docs.oracle.com/javase/8/docs/api/index.html?java/util/List.html) contenente un set di oggetti [File](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html) da caricare

 **Importazioni** 

```
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;
```

 **Codice** 

```
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();
```

Vedi [Attendi il completamento di un trasferimento](#transfermanager-wait-for-completion) per informazioni sull'utilizzo del `shutdownNow` metodo `waitForCompletion` per completare correttamente un trasferimento prima TransferManager di chiamare. In attesa del completamento del trasferimento, puoi interrogare o ascoltare gli aggiornamenti sullo stato e sui progressi del trasferimento. Per ulteriori informazioni, consulta [Ottieni lo stato e l'avanzamento del trasferimento](#transfermanager-get-status-and-progress).

L'[MultipleFileUpload](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/MultipleFileUpload.html)oggetto restituito da `uploadFileList` può essere utilizzato per interrogare lo stato o l'avanzamento del trasferimento. Per ulteriori [informazioni, consulta Esamina lo stato di avanzamento corrente di un trasferimento](#transfermanager-get-progress-polling) [e Ottieni lo stato di avanzamento del trasferimento con](#transfermanager-progress-listener) a. ProgressListener

Puoi anche usare `MultipleFileUpload` il `getSubTransfers` metodo S per ottenere i singoli `Upload` oggetti per ogni file da trasferire. Per ulteriori informazioni, consulta [Get the Progress of Subtransfer](#transfermanager-get-subtransfer-progress).

Vedi l'[esempio completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java) su. GitHub

### Carica una directory
<a name="transfermanager-upload-directory"></a>

È possibile utilizzare TransferManager il `uploadDirectory` metodo S per caricare un'intera directory di file, con l'opzione di copiare i file nelle sottodirectory in modo ricorsivo. **Fornisci un nome di Amazon S3 bucket, un prefisso chiave S3, [un](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html) oggetto File che rappresenta la directory locale da copiare e `boolean` un valore che indica se vuoi copiare le sottodirectory in modo ricorsivo (vero o falso).**

 **Importazioni** 

```
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;
```

 **Codice** 

```
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();
```

Vedi [Wait for a Transfer to Complete per informazioni su come utilizzare il metodo To `waitForCompletion` Completare](#transfermanager-wait-for-completion) con successo un trasferimento prima di chiamare. TransferManager `shutdownNow` In attesa del completamento del trasferimento, puoi interrogare o ascoltare gli aggiornamenti sullo stato e sui progressi del trasferimento. Per ulteriori informazioni, consulta [Ottieni lo stato e l'avanzamento del trasferimento](#transfermanager-get-status-and-progress).

L'[MultipleFileUpload](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/MultipleFileUpload.html)oggetto restituito da `uploadFileList` può essere utilizzato per interrogare lo stato o l'avanzamento del trasferimento. Per ulteriori [informazioni, consulta Esamina lo stato di avanzamento corrente di un trasferimento](#transfermanager-get-progress-polling) [e Ottieni lo stato di avanzamento del trasferimento con](#transfermanager-progress-listener) a. ProgressListener

Puoi anche usare `MultipleFileUpload` il `getSubTransfers` metodo S per ottenere i singoli `Upload` oggetti per ogni file da trasferire. Per ulteriori informazioni, consulta [Get the Progress of Subtransfer](#transfermanager-get-subtransfer-progress).

Vedi l'[esempio completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java) su. GitHub

## Scarica file o directory
<a name="transfermanager-downloading"></a>

Usa la TransferManager classe per scaricare un singolo file (Amazon S3 oggetto) o una directory (un nome di Amazon S3 bucket seguito dal prefisso di un oggetto) da. Amazon S3

**Topics**
+ [Scarica un singolo file](#transfermanager-download-file)
+ [Scarica una directory](#tranfermanager-download-directory)

### Scarica un singolo file
<a name="transfermanager-download-file"></a>

Utilizzate il `download` metodo TransferManager's, fornendo il nome del Amazon S3 bucket contenente l'oggetto che desiderate scaricare, il nome della chiave (oggetto) e un oggetto [File](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html) che rappresenta il file da creare sul sistema locale.

 **Importazioni** 

```
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;
```

 **Codice** 

```
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();
```

Vedi [Wait for a Transfer to Complete](#transfermanager-wait-for-completion) per informazioni sull'utilizzo del `shutdownNow` metodo `waitForCompletion` per completare correttamente un trasferimento prima TransferManager di chiamare. In attesa del completamento del trasferimento, puoi interrogare o ascoltare gli aggiornamenti sullo stato e sui progressi del trasferimento. Per ulteriori informazioni, consulta [Ottieni lo stato e l'avanzamento del trasferimento](#transfermanager-get-status-and-progress).

Guarda l'[esempio completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrDownload.java) su GitHub.

### Scarica una directory
<a name="tranfermanager-download-directory"></a>

Per scaricare un set di file che condividono un prefisso di chiave comune (analogo a una directory su un file system) da Amazon S3, utilizzate il metodo. TransferManager `downloadDirectory` Il metodo utilizza il nome del Amazon S3 bucket contenente gli oggetti da scaricare, il prefisso dell'oggetto condiviso da tutti gli oggetti e un oggetto [File](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html) che rappresenta la directory in cui scaricare i file sul sistema locale. Se la directory denominata non esiste ancora, verrà creata.

 **Importazioni** 

```
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;
```

 **Codice** 

```
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();
```

Vedi [Attendi il completamento di un trasferimento](#transfermanager-wait-for-completion) per informazioni sull'utilizzo del `shutdownNow` metodo `waitForCompletion` per completare correttamente un trasferimento prima TransferManager di chiamare. In attesa del completamento del trasferimento, puoi interrogare o ascoltare gli aggiornamenti sullo stato e sui progressi del trasferimento. Per ulteriori informazioni, consulta [Ottieni lo stato e l'avanzamento del trasferimento](#transfermanager-get-status-and-progress).

Guarda l'[esempio completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrDownload.java) su GitHub.

## Copia oggetti
<a name="transfermanager-copy-object"></a>

Per copiare un oggetto da un bucket S3 a un altro, usa il TransferManager `copy` metodo.

 **Importazioni** 

```
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;
```

 **Codice** 

```
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();
```

Vedi l'[esempio completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrCopy.java) su. GitHub

## Attendi il completamento del trasferimento
<a name="transfermanager-wait-for-completion"></a>

Se l'applicazione (o il thread) riesce a bloccarsi fino al completamento del trasferimento, puoi utilizzare il `waitForCompletion` metodo dell'interfaccia [Transfer](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/Transfer.html) per bloccare fino al completamento del trasferimento o al verificarsi di un'eccezione.

```
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);
}
```

È possibile visualizzare l'avanzamento dei trasferimenti se si effettuano sondaggi sugli eventi *prima* della chiamata`waitForCompletion`, si implementa un meccanismo di polling su un thread separato o si ricevono aggiornamenti sullo stato di avanzamento in modo asincrono utilizzando un. [ProgressListener](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/event/ProgressListener.html)

[Vedi l'esempio completo su.](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java) GitHub

## Ottieni lo stato e l'avanzamento del trasferimento
<a name="transfermanager-get-status-and-progress"></a>

Ciascuna delle classi restituite dai `copy` metodi TransferManager `upload*``download*`, e restituisce un'istanza di una delle seguenti classi, a seconda che si tratti di un'operazione a file singolo o multiplo.


**​**  

| Classe | Restituito da | 
| --- | --- | 
|  [Copia](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/Copy.html)  |  `copy`  | 
|  [Scarica](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`  | 
|  [Caricamento](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`  | 

Tutte queste classi implementano l'interfaccia [Transfer](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/Transfer.html). `Transfer`fornisce metodi utili per conoscere lo stato di avanzamento di un trasferimento, mettere in pausa o riprendere il trasferimento e ottenere lo stato attuale o finale del trasferimento.

**Topics**
+ [Verifica lo stato di avanzamento attuale di un trasferimento](#transfermanager-get-progress-polling)
+ [Ottieni Transfer Progress con un ProgressListener](#transfermanager-progress-listener)
+ [Ottieni lo stato di avanzamento dei subtrasferimenti](#transfermanager-get-subtransfer-progress)

### Verifica lo stato di avanzamento attuale di un trasferimento
<a name="transfermanager-get-progress-polling"></a>

Questo ciclo stampa lo stato di avanzamento di un trasferimento, ne esamina l'avanzamento corrente durante l'esecuzione e, una volta completato, ne stampa lo stato finale.

 **Importazioni** 

```
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;
```

 **Codice** 

```
// 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);
```

Vedi l'[esempio completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java) su. GitHub

### Ottieni Transfer Progress con un ProgressListener
<a name="transfermanager-progress-listener"></a>

Puoi allegare un [ProgressListener](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/event/ProgressListener.html)a qualsiasi trasferimento utilizzando il `addProgressListener` metodo dell'interfaccia di [trasferimento](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/Transfer.html).

A [ProgressListener](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/event/ProgressListener.html)richiede un solo metodo`progressChanged`, che accetta un [ProgressEvent](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/event/ProgressEvent.html)oggetto. È possibile utilizzare l'oggetto per ottenere i byte totali dell'operazione chiamando il relativo `getBytes` metodo e il numero di byte trasferiti finora mediante la chiamata. `getBytesTransferred`

 **Importazioni** 

```
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;
```

 **Codice** 

```
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();
```

Vedi l'[esempio completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java) su. GitHub

### Ottieni lo stato di avanzamento dei subtrasferimenti
<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 può restituire informazioni sui suoi subtrasferimenti chiamando il suo `getSubTransfers` metodo. Restituisce una [raccolta](https://docs.oracle.com/javase/8/docs/api/index.html?java/util/Collection.html) non modificabile di oggetti [Upload](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/Upload.html) che forniscono lo stato e l'avanzamento individuali del trasferimento di ogni sottotrasferimento.

 **Importazioni** 

```
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;
```

 **Codice** 

```
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);
```

[Vedi l'esempio completo su.](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java) GitHub

## Ulteriori informazioni
<a name="transfermanager-see-also"></a>
+  [Object Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html) nella Guida Amazon Simple Storage Service per l'utente