2

jetS3t のサンプルコード例より以下のコード: 最初からダウンロードするファイル数がわからない場合はどうすればよいですか? たとえば、S3 のサムネイルを使用するアプリケーションと、ユーザーがサムネイルのリストをスクロールするクライアント アプリケーションです。

オブジェクトをローカル ファイルにダウンロードする

マルチスレッド サービスは、一度に複数のオブジェクトをダウンロードする方法を提供しますが、これを使用するには、最初に各オブジェクトに関連付けられたデータを配置する場所を準備する必要があります。このデータを格納する最も明白な場所はファイルです。そのため、オブジェクト データをファイルにダウンロードする例を見てみましょう。オブジェクトをファイルにダウンロードするには、まずオブジェクトごとに DownloadPackage クラスを作成する必要があります。このクラスは、オブジェクトのデータが書き込まれるファイルにオブジェクトを関連付けるだけの単純なコンテナです。オブジェクトごとに DownloadPackage を作成して、オブジェクトを出力ファイルに関連付けます。

 DownloadPackage[] downloadPackages = new DownloadPackage[5];
   downloadPackages[0] = new DownloadPackage(objects[0],
       new File(objects[0].getKey()));
   downloadPackages[1] = new DownloadPackage(objects[1],
       new File(objects[1].getKey()));
   downloadPackages[2] = new DownloadPackage(objects[2],
       new File(objects[2].getKey()));
   downloadPackages[3] = new DownloadPackage(objects[3],
       new File(objects[3].getKey()));
   downloadPackages[4] = new DownloadPackage(objects[4],
       new File(objects[4].getKey()));

   // Download the objects.
   simpleMulti.downloadObjects(bucket, downloadPackages);
   System.out.println("Downloaded objects to current working directory");

その場合の提案はありますか?前もって感謝します

アントニス

4

1 に答える 1

0

ダウンロード元のバケット内のオブジェクトを一覧表示し、定義したルールに従ってキーをフィルタリングできます。次に、マルチパートダウンロードを開始できます。

バケットからキーを取得します。


public List getFilesList(String accessKey, String secretKey ,String bucketName ,String directoryPathRelativeToBucket) { List keys = new ArrayList(); org.jets3t.service.model.S3Object[] objects = new org.jets3t.service.model.S3Object[]{}; try { // Create a credentials object and service to access S3 account org.jets3t.service.security.AWSCredentials myCredentials = new org.jets3t.service.security.AWSCredentials(accessKey, secretKey);

S3Service service = new RestS3Service(myCredentials); objects = service.listObjects(bucketName ,directoryPathRelativeToBucket, null); log.info("got bucket listing for bucket[" + bucketName + "]"); } catch (S3ServiceException e) { log.error("Failed to get or object listing for bucket[" + bucketName + "] due to exception:", e); } for (org.jets3t.service.model.S3Object s3Object : objects) { if (s3Object.getKey().contains("$") == false) { keys.add(s3Object.getKey()); } } return keys; }

キーをフィルタリングした後、キーリストの特定の部分をダウンロードできます。

于 2011-04-10T07:28:02.813 に答える