

Die Version AWS SDK für Java 1.x wurde end-of-support am 31. Dezember 2025 erreicht. Wir empfehlen Ihnen, auf den zu migrieren [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html), um weiterhin neue Funktionen, Verfügbarkeitsverbesserungen und Sicherheitsupdates zu erhalten.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# TransferManager Für Amazon S3 Operationen verwenden
<a name="examples-s3-transfermanager"></a>

Sie können die AWS SDK für Java TransferManager Klasse verwenden, um Dateien zuverlässig aus der lokalen Umgebung zu übertragen Amazon S3 und Objekte von einem S3-Speicherort an einen anderen zu kopieren. `TransferManager`kann den Fortschritt einer Übertragung abrufen und Uploads und Downloads anhalten oder fortsetzen.

**Anmerkung**  
Bewährte Methode  
Wir empfehlen Ihnen, die [AbortIncompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlifecycle.html)Lebenszyklusregel für Ihre Amazon S3 Buckets zu aktivieren.  
Diese Regel weist darauf Amazon S3 hin, dass mehrteilige Uploads abgebrochen werden, die nicht innerhalb einer bestimmten Anzahl von Tagen nach der Initiierung abgeschlossen werden. Wenn das festgelegte Zeitlimit überschritten wird, wird der Upload Amazon S3 abgebrochen und anschließend die unvollständigen Upload-Daten gelöscht.  
Weitere Informationen finden Sie unter [Lebenszykluskonfiguration für einen Bucket mit Versionierung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-bucket-with-versioning.html) im Amazon S3 Benutzerhandbuch.

**Anmerkung**  
Bei diesen Codebeispielen wird vorausgesetzt, dass Sie die Informationen [unter Verwenden von](basics.md) verstehen AWS SDK für Java und AWS Standardanmeldedaten anhand der Informationen unter [AWS Anmeldeinformationen einrichten und Region für die Entwicklung](setup-credentials.md) konfiguriert haben.

## Hochladen von Dateien und Verzeichnissen
<a name="transfermanager-uploading"></a>

TransferManager kann Dateien, Dateilisten und Verzeichnisse in alle Amazon S3 Buckets hochladen, die Sie [zuvor erstellt](examples-s3-buckets.md#create-bucket) haben.

**Topics**
+ [Hochladen einer einzelnen Datei](#transfermanager-upload-file)
+ [Hochladen einer Dateiliste](#transfermanager-upload-file-list)
+ [Upload eines Verzeichnisses](#transfermanager-upload-directory)

### Hochladen einer einzelnen Datei
<a name="transfermanager-upload-file"></a>

Rufen Sie TransferManager die `upload` Methode auf und geben Sie einen Amazon S3 Bucket-Namen, einen Schlüsselnamen (Objektnamen) und ein [Standard-Java-Dateiobjekt](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html) an, das die hochzuladende Datei darstellt.

 **Importe** 

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

Die `upload`-Methode kehrt *sofort* zurück und stellt ein `Upload`-Objekt bereit, mit dem Sie den Übertragungsstatus abrufen oder auf die Fertigstellung warten können.

Informationen [dazu, wie Sie eine Übertragung vor dem Aufrufen der `shutdownNow` Methode erfolgreich abschließen `waitForCompletion` können, finden Sie unter Warten](#transfermanager-wait-for-completion), bis eine Übertragung abgeschlossen TransferManager ist. Während Sie darauf warten, dass die Übertragung abgeschlossen ist, können Sie Aktualisierungen zum Status und Fortschritt abfragen oder diese als Ereignisse empfangen. Weitere Informationen finden Sie unter [Abrufen des Übertragungsstatus und ‑fortschritts](#transfermanager-get-status-and-progress).

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java) finden Sie unter GitHub.

### Hochladen einer Dateiliste
<a name="transfermanager-upload-file-list"></a>

Sie können mehrere Dateien auf einmal hochladen, indem Sie die TransferManager-Methode des `uploadFileList` aufrufen und dabei Folgendes angeben:
+ Ein Amazon S3 Bucket-Name
+ *Schlüsselpräfix*, das dem Namen der erstellten Objekte vorangestellt wird (Pfad innerhalb des Buckets, wo die Objekte abgespeichert werden sollen)
+ [File](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html)-Objekt, das das relative Verzeichnis darstellt, von dem aus die Dateipfade erstellt werden sollen
+ [List](https://docs.oracle.com/javase/8/docs/api/index.html?java/util/List.html)-Objekt mit einer Reihe von [File](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html)-Objekten zum Hochladen

 **Importe** 

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

Informationen dazu, wie Sie [die `shutdownNow` Methode verwenden, um eine Übertragung vor dem Aufrufen TransferManager erfolgreich abzuschließen`waitForCompletion`, finden Sie unter Warten](#transfermanager-wait-for-completion) auf den Abschluss einer Übertragung. Während Sie darauf warten, dass die Übertragung abgeschlossen ist, können Sie Aktualisierungen zum Status und Fortschritt abfragen oder diese als Ereignisse empfangen. Weitere Informationen finden Sie unter [Abrufen des Übertragungsstatus und ‑fortschritts](#transfermanager-get-status-and-progress).

Das von zurückgegebene [MultipleFileUpload](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/MultipleFileUpload.html)Objekt `uploadFileList` kann verwendet werden, um den Status oder den Fortschritt der Übertragung abzufragen. Weitere [Informationen finden Sie unter Den aktuellen Status einer Übertragung](#transfermanager-get-progress-polling) [abfragen und ProgressListener Übertragungsstatus abrufen mit](#transfermanager-progress-listener) a.

Sie können auch die `MultipleFileUpload`-Methode der `getSubTransfers`-Klasse verwenden, um die einzelnen `Upload`-Objekte für jede zu übertragende Datei zu erhalten. Weitere Informationen finden Sie unter [Abruf des Fortschritts von untergeordneten Übertragungen](#transfermanager-get-subtransfer-progress).

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java) finden Sie unter GitHub.

### Upload eines Verzeichnisses
<a name="transfermanager-upload-directory"></a>

Sie können die `uploadDirectory` Methode verwenden TransferManager, um ein ganzes Verzeichnis von Dateien hochzuladen, mit der Option, Dateien in Unterverzeichnisse rekursiv zu kopieren. Sie geben einen Amazon S3 Bucket-Namen, ein S3-Schlüsselpräfix, ein [File-Objekt](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html), das das zu kopierende lokale Verzeichnis darstellt, und einen `boolean` Wert an, der angibt, ob Sie Unterverzeichnisse rekursiv kopieren möchten (*true* oder *false*).

 **Importe** 

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

Informationen dazu, wie Sie [eine Übertragung vor dem Aufrufen TransferManager der Methode erfolgreich abschließen `waitForCompletion` können, finden Sie unter Warten](#transfermanager-wait-for-completion) auf den Abschluss einer Übertragung. `shutdownNow` Während Sie darauf warten, dass die Übertragung abgeschlossen ist, können Sie Aktualisierungen zum Status und Fortschritt abfragen oder diese als Ereignisse empfangen. Weitere Informationen finden Sie unter [Abrufen des Übertragungsstatus und ‑fortschritts](#transfermanager-get-status-and-progress).

Das von zurückgegebene [MultipleFileUpload](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/MultipleFileUpload.html)Objekt `uploadFileList` kann verwendet werden, um den Status oder den Fortschritt der Übertragung abzufragen. Weitere [Informationen finden Sie unter Den aktuellen Status einer Übertragung](#transfermanager-get-progress-polling) [abfragen und ProgressListener Übertragungsstatus abrufen mit](#transfermanager-progress-listener) a.

Sie können auch die `MultipleFileUpload`-Methode der `getSubTransfers`-Klasse verwenden, um die einzelnen `Upload`-Objekte für jede zu übertragende Datei zu erhalten. Weitere Informationen finden Sie unter [Abruf des Fortschritts von untergeordneten Übertragungen](#transfermanager-get-subtransfer-progress).

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java) finden Sie unter GitHub.

## Herunterladen von Dateien oder Verzeichnissen
<a name="transfermanager-downloading"></a>

Verwenden Sie die TransferManager Klasse, um entweder eine einzelne Datei (Amazon S3 Objekt) oder ein Verzeichnis (ein Amazon S3 Bucket-Name gefolgt von einem Objektpräfix) herunterzuladen Amazon S3.

**Topics**
+ [Herunterladen einer einzelnen Datei](#transfermanager-download-file)
+ [Herunterladen eines Verzeichnisses](#tranfermanager-download-directory)

### Herunterladen einer einzelnen Datei
<a name="transfermanager-download-file"></a>

Verwenden Sie die `download` Methode TransferManager's und geben Sie den Amazon S3 Bucket-Namen an, der das Objekt enthält, das Sie herunterladen möchten, den Schlüssel- (Objekt-) Namen und ein [File-Objekt](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html), das die Datei darstellt, die auf Ihrem lokalen System erstellt werden soll.

 **Importe** 

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

Informationen [dazu, wie Sie eine Übertragung vor dem Aufrufen TransferManager der `shutdownNow` Methode erfolgreich abschließen `waitForCompletion` können, finden Sie unter Warten](#transfermanager-wait-for-completion) auf den Abschluss einer Übertragung. Während Sie darauf warten, dass die Übertragung abgeschlossen ist, können Sie Aktualisierungen zum Status und Fortschritt abfragen oder diese als Ereignisse empfangen. Weitere Informationen finden Sie unter [Abrufen des Übertragungsstatus und ‑fortschritts](#transfermanager-get-status-and-progress).

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrDownload.java) finden Sie unter GitHub.

### Herunterladen eines Verzeichnisses
<a name="tranfermanager-download-directory"></a>

Verwenden Sie die TransferManager `downloadDirectory` Methode, um eine Reihe von Dateien herunterzuladen, die ein gemeinsames key prefix haben (analog zu einem Verzeichnis in einem Dateisystem). Amazon S3 Die Methode verwendet den Amazon S3 Bucket-Namen, der die Objekte enthält, die Sie herunterladen möchten, das Objektpräfix, das von allen Objekten gemeinsam genutzt wird, und ein [File-Objekt](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html), das das Verzeichnis darstellt, in das die Dateien auf Ihrem lokalen System heruntergeladen werden sollen. Wenn das angegebene Verzeichnis noch nicht vorhanden ist, wird es erstellt.

 **Importe** 

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

Informationen [dazu, wie Sie eine Übertragung vor dem Aufrufen TransferManager der `shutdownNow` Methode erfolgreich abschließen `waitForCompletion` können, finden Sie unter Warten](#transfermanager-wait-for-completion) auf den Abschluss einer Übertragung. Während Sie darauf warten, dass die Übertragung abgeschlossen ist, können Sie Aktualisierungen zum Status und Fortschritt abfragen oder diese als Ereignisse empfangen. Weitere Informationen finden Sie unter [Abrufen des Übertragungsstatus und ‑fortschritts](#transfermanager-get-status-and-progress).

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrDownload.java) finden Sie unter GitHub.

## Kopieren von Objekten
<a name="transfermanager-copy-object"></a>

Rufen Sie die `copy`-Methode von TransferManager auf, um ein Objekt von einem S3-Bucket in einen anderen zu kopieren.

 **Importe** 

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

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrCopy.java) finden Sie unter GitHub.

## Warten auf die Fertigstellung einer Übertragung
<a name="transfermanager-wait-for-completion"></a>

Wenn Ihre Anwendung (oder Ihr Thread) blockieren kann, bis die Übertragung abgeschlossen ist, können Sie die `waitForCompletion` Methode der [Transfer-Schnittstelle](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/Transfer.html) verwenden, um zu blockieren, bis die Übertragung abgeschlossen ist oder eine Ausnahme auftritt.

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

Sie erhalten den Fortschritt der Übertragungen, wenn Sie *vor dem* Aufrufen Ereignisse abfragen`waitForCompletion`, einen Abfragemechanismus in einem separaten Thread implementieren oder Fortschrittsaktualisierungen asynchron mit einem empfangen. [ProgressListener](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/event/ProgressListener.html)

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java) finden Sie unter. GitHub

## Abrufen des Übertragungsstatus und ‑fortschritt
<a name="transfermanager-get-status-and-progress"></a>

Jede der von den `copy` Methoden TransferManager `upload*``download*`, und zurückgegebenen Klassen gibt eine Instanz einer der folgenden Klassen zurück, je nachdem, ob es sich um eine Operation mit einer oder mehreren Dateien handelt.


**​**  

| Klasse | Zurückgegeben von | 
| --- | --- | 
|  [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`  | 
|  [Hochladen](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`  | 

Alle diese Klassen implementieren die [Transfer](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/Transfer.html)-Schnittstelle. `Transfer` liefert nützliche Methoden, um den Fortschritt einer Übertragung abzurufen, die Übertragung zu pausieren oder fortzusetzen sowie den aktuellen oder abschließenden Status der Übertragung abzurufen.

**Topics**
+ [Abfragen des aktuellen Fortschritts einer Übertragung](#transfermanager-get-progress-polling)
+ [Holen Sie sich den Übertragungsfortschritt mit einem ProgressListener](#transfermanager-progress-listener)
+ [Abruf des Fortschritts von untergeordneten Übertragungen](#transfermanager-get-subtransfer-progress)

### Abfragen des aktuellen Fortschritts einer Übertragung
<a name="transfermanager-get-progress-polling"></a>

Diese Schleife gibt den Fortschritt einer Übertragung aus, untersucht den aktuellen Fortschritt während der Ausführung und gibt beim Abschluss den abschließenden Status aus.

 **Importe** 

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

[Das vollständige Beispiel finden Sie unter.](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java) GitHub

### Holen Sie sich den Übertragungsfortschritt mit einem ProgressListener
<a name="transfermanager-progress-listener"></a>

Mithilfe der `addProgressListener` Methode der Transfer-Schnittstelle können Sie jeder [Übertragung](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/Transfer.html) eine [ProgressListener](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/event/ProgressListener.html)hinzufügen.

A [ProgressListener](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/event/ProgressListener.html)benötigt nur eine Methode`progressChanged`, die ein [ProgressEvent](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/event/ProgressEvent.html)Objekt akzeptiert. Mit diesem Objekt können Sie die Gesamtzahl der Bytes der Operation ermitteln, indem Sie die `getBytes`-Methode aufrufen. Die Gesamtzahl der übertragenen Bytes erfahren Sie mit Aufruf von `getBytesTransferred`.

 **Importe** 

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

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java) finden Sie unter GitHub.

### Abruf des Fortschritts von untergeordneten Übertragungen
<a name="transfermanager-get-subtransfer-progress"></a>

Die [MultipleFileUpload](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/MultipleFileUpload.html)Klasse kann Informationen über ihre Unterübertragungen zurückgeben, indem sie ihre `getSubTransfers` Methode aufruft. Sie gibt eine unveränderbare [Sammlung](https://docs.oracle.com/javase/8/docs/api/index.html?java/util/Collection.html) von [Upload-Objekten](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/Upload.html) zurück, die den individuellen Übertragungsstatus und den Fortschritt jeder Unterübertragung angeben.

 **Importe** 

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

Das [vollständige](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java) Beispiel finden Sie unter. GitHub

## Weitere Infos
<a name="transfermanager-see-also"></a>
+  [Objektschlüssel](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html) im Amazon Simple Storage Service Benutzerhandbuch