

 AWS SDK untuk Java 1.x mencapai end-of-support pada 31 Desember 2025. Kami menyarankan Anda bermigrasi ke [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html)untuk terus menerima fitur baru, peningkatan ketersediaan, dan pembaruan keamanan.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan TransferManager untuk Amazon S3 Operasi
<a name="examples-s3-transfermanager"></a>

Anda dapat menggunakan AWS SDK untuk Java TransferManager kelas untuk mentransfer file secara andal dari lingkungan lokal ke Amazon S3 dan untuk menyalin objek dari satu lokasi S3 ke lokasi lainnya. `TransferManager`bisa mendapatkan kemajuan transfer dan jeda atau melanjutkan unggahan dan unduhan.

**catatan**  
Praktik Terbaik  
Kami menyarankan Anda mengaktifkan aturan [AbortIncompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlifecycle.html)siklus hidup pada bucket Anda Amazon S3 .  
Aturan ini mengarahkan Amazon S3 untuk membatalkan unggahan multipart yang tidak selesai dalam jumlah hari tertentu setelah dimulai. Ketika batas waktu yang ditetapkan terlampaui, Amazon S3 batalkan unggahan dan kemudian menghapus data unggahan yang tidak lengkap.  
Untuk informasi selengkapnya, lihat [Konfigurasi Siklus Hidup untuk Bucket dengan Pembuatan Versi di Panduan Pengguna](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-bucket-with-versioning.html). Amazon S3 

**catatan**  
Contoh kode ini mengasumsikan bahwa Anda memahami materi dalam [Menggunakan AWS SDK untuk Java](basics.md) dan telah mengonfigurasi AWS kredensi default menggunakan informasi di [Siapkan AWS Kredensial dan](setup-credentials.md) Wilayah untuk Pengembangan.

## Unggah File dan Direktori
<a name="transfermanager-uploading"></a>

TransferManager dapat mengunggah file, daftar file, dan direktori ke Amazon S3 bucket apa pun yang telah Anda buat [sebelumnya](examples-s3-buckets.md#create-bucket).

**Topics**
+ [Unggah Satu File](#transfermanager-upload-file)
+ [Unggah Daftar File](#transfermanager-upload-file-list)
+ [Unggah Direktori](#transfermanager-upload-directory)

### Unggah Satu File
<a name="transfermanager-upload-file"></a>

`upload`Metode panggilan TransferManager, memberikan nama Amazon S3 bucket, nama kunci (objek), dan objek Java [File](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html) standar yang mewakili file yang akan diunggah.

 **Impor** 

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

 **Kode** 

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

`upload`Metode *segera* kembali, menyediakan `Upload` objek yang akan digunakan untuk memeriksa status transfer atau menunggu sampai selesai.

Lihat [Tunggu Transfer Selesai](#transfermanager-wait-for-completion) untuk informasi tentang penggunaan `waitForCompletion` agar berhasil menyelesaikan transfer sebelum `shutdownNow` metode panggilan TransferManager. Sambil menunggu transfer selesai, Anda dapat melakukan polling atau mendengarkan pembaruan tentang status dan kemajuannya. Lihat [Dapatkan Status Transfer dan Kemajuan](#transfermanager-get-status-and-progress) untuk informasi selengkapnya.

Lihat [contoh lengkapnya](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java) di GitHub.

### Unggah Daftar File
<a name="transfermanager-upload-file-list"></a>

Untuk mengunggah beberapa file dalam satu operasi, panggil TransferManager `uploadFileList` metode, berikan yang berikut:
+ Nama Amazon S3 ember
+ Sebuah *key prefix* untuk menambahkan ke nama-nama objek yang dibuat (jalur di dalam ember untuk menempatkan objek)
+ Sebuah objek [File](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html) yang mewakili direktori relatif dari mana untuk membuat jalur file
+ Sebuah objek [List](https://docs.oracle.com/javase/8/docs/api/index.html?java/util/List.html) yang berisi satu set objek [File](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html) untuk meng-upload

 **Impor** 

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

 **Kode** 

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

Lihat [Tunggu Transfer Selesai](#transfermanager-wait-for-completion) untuk informasi tentang penggunaan `waitForCompletion` agar berhasil menyelesaikan transfer sebelum `shutdownNow` metode panggilan TransferManager. Sambil menunggu transfer selesai, Anda dapat melakukan polling atau mendengarkan pembaruan tentang status dan kemajuannya. Lihat [Dapatkan Status Transfer dan Kemajuan](#transfermanager-get-status-and-progress) untuk informasi selengkapnya.

[MultipleFileUpload](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/MultipleFileUpload.html)Objek yang dikembalikan oleh `uploadFileList` dapat digunakan untuk menanyakan status transfer atau kemajuan. Lihat [Polling Kemajuan Transfer Saat Ini](#transfermanager-get-progress-polling) dan [Dapatkan Kemajuan Transfer dengan a ProgressListener](#transfermanager-progress-listener) untuk informasi selengkapnya.

Anda juga dapat menggunakan `MultipleFileUpload` `getSubTransfers` metode ini untuk mendapatkan `Upload` objek individual untuk setiap file yang ditransfer. Untuk informasi selengkapnya, lihat [Mendapatkan Kemajuan Subtransfer](#transfermanager-get-subtransfer-progress).

Lihat [contoh lengkapnya](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java) di GitHub.

### Unggah Direktori
<a name="transfermanager-upload-directory"></a>

Anda dapat menggunakan TransferManager `uploadDirectory` metode ini untuk mengunggah seluruh direktori file, dengan opsi untuk menyalin file di subdirektori secara rekursif. **Anda memberikan nama Amazon S3 bucket, key prefix S3, objek File [yang mewakili direktori lokal yang](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html) akan disalin, dan `boolean` nilai yang menunjukkan apakah Anda ingin menyalin subdirektori secara rekursif (benar atau salah).**

 **Impor** 

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

 **Kode** 

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

Lihat [Tunggu Transfer Selesai](#transfermanager-wait-for-completion) untuk informasi tentang penggunaan `waitForCompletion` agar berhasil menyelesaikan transfer sebelum `shutdownNow` metode panggilan TransferManager. Sambil menunggu transfer selesai, Anda dapat melakukan polling atau mendengarkan pembaruan tentang status dan kemajuannya. Lihat [Dapatkan Status Transfer dan Kemajuan](#transfermanager-get-status-and-progress) untuk informasi selengkapnya.

[MultipleFileUpload](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/MultipleFileUpload.html)Objek yang dikembalikan oleh `uploadFileList` dapat digunakan untuk menanyakan status transfer atau kemajuan. Lihat [Polling Kemajuan Transfer Saat Ini](#transfermanager-get-progress-polling) dan [Dapatkan Kemajuan Transfer dengan a ProgressListener](#transfermanager-progress-listener) untuk informasi selengkapnya.

Anda juga dapat menggunakan `MultipleFileUpload` `getSubTransfers` metode ini untuk mendapatkan `Upload` objek individual untuk setiap file yang ditransfer. Untuk informasi selengkapnya, lihat [Mendapatkan Kemajuan Subtransfer](#transfermanager-get-subtransfer-progress).

Lihat [contoh lengkapnya](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrUpload.java) di GitHub.

## Unduh File atau Direktori
<a name="transfermanager-downloading"></a>

Gunakan TransferManager kelas untuk mengunduh file tunggal (Amazon S3 objek) atau direktori (nama Amazon S3 bucket diikuti oleh awalan objek) dari Amazon S3.

**Topics**
+ [Unduh File Tunggal](#transfermanager-download-file)
+ [Unduh Direktori](#tranfermanager-download-directory)

### Unduh File Tunggal
<a name="transfermanager-download-file"></a>

Gunakan `download` metode ini, berikan nama Amazon S3 bucket yang berisi objek yang ingin Anda unduh, nama kunci (objek), dan objek [File](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html) yang mewakili file yang akan dibuat di sistem lokal Anda. TransferManager

 **Impor** 

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

 **Kode** 

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

Lihat [Tunggu Transfer Selesai](#transfermanager-wait-for-completion) untuk informasi tentang penggunaan `waitForCompletion` agar berhasil menyelesaikan transfer sebelum `shutdownNow` metode panggilan TransferManager. Sambil menunggu transfer selesai, Anda dapat melakukan polling atau mendengarkan pembaruan tentang status dan kemajuannya. Lihat [Dapatkan Status Transfer dan Kemajuan](#transfermanager-get-status-and-progress) untuk informasi selengkapnya.

Lihat [contoh lengkapnya](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrDownload.java) di GitHub.

### Unduh Direktori
<a name="tranfermanager-download-directory"></a>

Untuk mengunduh sekumpulan file yang berbagi key prefix umum (analog dengan direktori pada sistem file) dari Amazon S3, gunakan metode ini. TransferManager `downloadDirectory` Metode ini mengambil nama Amazon S3 bucket yang berisi objek yang ingin Anda unduh, awalan objek yang dibagikan oleh semua objek, dan objek [File](https://docs.oracle.com/javase/8/docs/api/index.html?java/io/File.html) yang mewakili direktori untuk mengunduh file di sistem lokal Anda. Jika direktori bernama belum ada, itu akan dibuat.

 **Impor** 

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

 **Kode** 

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

Lihat [Tunggu Transfer Selesai](#transfermanager-wait-for-completion) untuk informasi tentang penggunaan `waitForCompletion` agar berhasil menyelesaikan transfer sebelum `shutdownNow` metode panggilan TransferManager. Sambil menunggu transfer selesai, Anda dapat melakukan polling atau mendengarkan pembaruan tentang status dan kemajuannya. Lihat [Dapatkan Status Transfer dan Kemajuan](#transfermanager-get-status-and-progress) untuk informasi selengkapnya.

Lihat [contoh lengkapnya](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrDownload.java) di GitHub.

## Menyalin objek
<a name="transfermanager-copy-object"></a>

Untuk menyalin objek dari satu bucket S3 ke bucket lainnya, gunakan TransferManager `copy` metode ini.

 **Impor** 

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

 **Kode** 

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

Lihat [contoh lengkapnya](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrCopy.java) di GitHub.

## Tunggu Transfer Selesai
<a name="transfermanager-wait-for-completion"></a>

Jika aplikasi Anda (atau thread) dapat memblokir hingga transfer selesai, Anda dapat menggunakan `waitForCompletion` metode antarmuka [Transfer](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/Transfer.html) untuk memblokir hingga transfer selesai atau pengecualian terjadi.

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

Anda mendapatkan kemajuan transfer jika Anda melakukan polling untuk acara *sebelum* menelepon`waitForCompletion`, menerapkan mekanisme polling pada utas terpisah, atau menerima pembaruan kemajuan secara asinkron menggunakan file. [ProgressListener](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/event/ProgressListener.html)

Lihat [contoh lengkapnya](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java) di GitHub.

## Dapatkan Status Transfer dan Kemajuan
<a name="transfermanager-get-status-and-progress"></a>

Masing-masing kelas dikembalikan oleh TransferManager`upload*`,`download*`, dan `copy` metode mengembalikan instance dari salah satu kelas berikut, tergantung pada apakah itu operasi satu file atau beberapa file.


**​**  

| Kelas | Dikembalikan oleh | 
| --- | --- | 
|  [Salin](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/Copy.html)  |  `copy`  | 
|  [Unduh](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`  | 
|  [Unggah](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`  | 

Semua kelas ini menerapkan antarmuka [Transfer](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/Transfer.html). `Transfer`menyediakan metode yang berguna untuk mendapatkan kemajuan transfer, menjeda atau melanjutkan transfer, dan mendapatkan status transfer saat ini atau akhir.

**Topics**
+ [Polling Kemajuan Transfer Saat Ini](#transfermanager-get-progress-polling)
+ [Dapatkan Kemajuan Transfer dengan ProgressListener](#transfermanager-progress-listener)
+ [Dapatkan Kemajuan Subtransfer](#transfermanager-get-subtransfer-progress)

### Polling Kemajuan Transfer Saat Ini
<a name="transfermanager-get-progress-polling"></a>

Loop ini mencetak kemajuan transfer, memeriksa kemajuannya saat berjalan dan, ketika selesai, mencetak status akhirnya.

 **Impor** 

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

 **Kode** 

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

Lihat [contoh lengkapnya](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java) di GitHub.

### Dapatkan Kemajuan Transfer dengan ProgressListener
<a name="transfermanager-progress-listener"></a>

Anda dapat melampirkan [ProgressListener](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/event/ProgressListener.html)ke transfer apa pun dengan menggunakan `addProgressListener` metode antarmuka [Transfer](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/Transfer.html).

A hanya [ProgressListener](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/event/ProgressListener.html)membutuhkan satu metode`progressChanged`, yang mengambil [ProgressEvent](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/event/ProgressEvent.html)objek. Anda dapat menggunakan objek untuk mendapatkan total byte operasi dengan memanggil `getBytes` metodenya, dan jumlah byte yang ditransfer sejauh ini dengan memanggil. `getBytesTransferred`

 **Impor** 

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

 **Kode** 

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

Lihat [contoh lengkapnya](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java) di GitHub.

### Dapatkan Kemajuan Subtransfer
<a name="transfermanager-get-subtransfer-progress"></a>

[MultipleFileUpload](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/MultipleFileUpload.html)Kelas dapat mengembalikan informasi tentang subtransfernya dengan memanggil `getSubTransfers` metodenya. Ini mengembalikan [Koleksi](https://docs.oracle.com/javase/8/docs/api/index.html?java/util/Collection.html) objek [Unggah](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/transfer/Upload.html) yang tidak dapat dimodifikasi yang menyediakan status transfer individu dan kemajuan setiap sub-transfer.

 **Impor** 

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

 **Kode** 

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

Lihat [contoh lengkapnya](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/XferMgrProgress.java) di GitHub.

## Info Selengkapnya
<a name="transfermanager-see-also"></a>
+  [Kunci Objek](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html) di Panduan Amazon Simple Storage Service Pengguna