Aracılığıyla paylaş


Java ile blob indirme

Bu makalede Java için Azure Depolama istemci kitaplığını kullanarak blob indirme işlemi gösterilmektedir. Blob verilerini yerel dosya yolu, akış veya metin dizesi gibi çeşitli hedeflere indirebilirsiniz. Ayrıca blob akışını açabilir ve buradan okuyabilirsiniz.

Önkoşullar

Ortamınızı ayarlama

Mevcut bir projeniz yoksa, bu bölümde Java için Azure Blob Depolama istemci kitaplığıyla çalışmak üzere bir projenin nasıl ayarlanacağı gösterilir. Daha fazla bilgi için bkz. Azure Blob Depolama ve Java'yı kullanmaya başlama.

Bu makaledeki kod örnekleriyle çalışmak için projenizi ayarlamak için bu adımları izleyin.

Not

Bu makalede, örnek kodu derlemek ve çalıştırmak için Maven derleme aracı kullanılmaktadır. Gradle gibi diğer derleme araçları da Java için Azure SDK ile çalışır.

Paketleri yükleme

pom.xml Dosyayı metin düzenleyicinizde açın. Bom dosyasını ekleyerek veya doğrudan bağımlılık ekleyerek paketleri yükleyin.

İçeri aktarma deyimleri ekleme

Aşağıdaki import deyimlerini ekleyin:

import com.azure.storage.blob.*;
import com.azure.storage.common.*;
import com.azure.storage.blob.options.BlobDownloadToFileOptions;
import com.azure.storage.blob.specialized.*;

import java.io.ByteArrayOutputStream;
import java.io.IOException;

Yetkilendirme

Yetkilendirme mekanizması, indirme işlemini gerçekleştirmek için gerekli izinlere sahip olmalıdır. Microsoft Entra Id ile yetkilendirme için (önerilen), Azure RBAC yerleşik rolü Depolama Blob Veri Okuyucusu veya üzeri gerekir. Daha fazla bilgi edinmek için Bkz. Blob Alma (REST API) için yetkilendirme kılavuzu.

İstemci nesnesi oluşturma

Bir uygulamayı Blob Depolama'ya bağlamak için bir BlobServiceClient örneği oluşturun.

Aşağıdaki örnek kullanarak bir BlobServiceClient nesne DefaultAzureCredentialoluşturmak için BlobServiceClientBuilder'ı kullanır ve gerekirse kapsayıcı ve blob istemcilerinin nasıl oluşturulacağını gösterir:

// Azure SDK client builders accept the credential as a parameter
// TODO: Replace <storage-account-name> with your actual storage account name
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
        .endpoint("https://<storage-account-name>.blob.core.windows.net/")
        .credential(new DefaultAzureCredentialBuilder().build())
        .buildClient();

// If needed, you can create a BlobContainerClient object from the BlobServiceClient
BlobContainerClient containerClient = blobServiceClient
        .getBlobContainerClient("<container-name>");

// If needed, you can create a BlobClient object from the BlobContainerClient
BlobClient blobClient = containerClient
        .getBlobClient("<blob-name>");

İstemci nesneleri oluşturma ve yönetme hakkında daha fazla bilgi edinmek için bkz . Veri kaynaklarıyla etkileşim kuran istemci nesneleri oluşturma ve yönetme.

Blobu indirme

Blobu indirmek için aşağıdaki yöntemlerden herhangi birini kullanabilirsiniz:

Dosya yoluna indirme

Aşağıdaki örnek blobu yerel dosya yoluna indirir:

public void downloadBlobToFile(BlobClient blobClient) {
    blobClient.downloadToFile("filepath/local-file.png");
}

Akışa indirme

Aşağıdaki örnek bir blobu bir OutputStream nesneye indirir:

public void downloadBlobToStream(BlobClient blobClient) {
    try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
        blobClient.downloadStream(outputStream);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Dizeye indirme

Aşağıdaki örnekte blob'un bir metin dosyası olduğu varsayılır ve blob bir String nesneye indirilir:

public void downloadBlobToText(BlobClient blobClient) {
    String content = blobClient.downloadContent().toString();
    System.out.printf("Blob contents: %s%n", content);
}

Akıştan indirme

Aşağıdaki örnek, akıştan bir ve okuyarak blobu BlobInputStream indirir:

public void readBlobFromStream(BlobClient blobClient) {
    // Opening a blob input stream allows you to read from a blob through a normal
    // stream interface

    try (BlobInputStream blobStream = blobClient.openInputStream()) {
        blobStream.read();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Yapılandırma seçenekleriyle blok blobu indirme

Blob indirirken istemci kitaplığı yapılandırma seçeneklerini tanımlayabilirsiniz. Bu seçenekler performansı geliştirmek ve güvenilirliği artırmak için ayarlanabilir. Aşağıdaki kod örneklerinde, indirme yöntemi çağrılırken yapılandırma seçeneklerini tanımlamak için BlobDownloadToFileOptions'ın nasıl kullanılacağı gösterilmektedir.

İndirmede veri aktarımı seçeneklerini belirtme

Veri aktarımı işlemlerinin performansını artırmak için ParallelTransferOptions içinde değerleri yapılandırabilirsiniz. İndirmeler için aşağıdaki değerler uygulamanızın gereksinimlerine göre ayarlanabilir:

  • blockSize: Her istek için aktarım için en büyük blok boyutu. setBlockSizeLong yöntemini kullanarak bu değeri ayarlayabilirsiniz.
  • maxConcurrency: Tek bir paralel aktarımın parçası olarak herhangi bir zamanda verilen en fazla paralel istek sayısı. setMaxConcurrency yöntemini kullanarak bu değeri ayarlayabilirsiniz.

İndirme için kullanmak ParallelTransferOptions üzere dosyanıza aşağıdaki import yönergeyi ekleyin:

import com.azure.storage.common.*;

Aşağıdaki kod örneği için ParallelTransferOptions değerleri ayarlamayı ve bir örneğin parçası BlobDownloadToFileOptions olarak seçenekleri eklemeyi gösterir. Bu örnekte sağlanan değerler bir öneri olarak tasarlanmamıştır. Bu değerleri düzgün ayarlamak için uygulamanızın belirli gereksinimlerini dikkate almanız gerekir.

public void downloadBlobWithTransferOptions(BlobClient blobClient) {
    ParallelTransferOptions parallelTransferOptions = new ParallelTransferOptions()
            .setBlockSizeLong((long) (4 * 1024 * 1024)) // 4 MiB block size
            .setMaxConcurrency(2);

    BlobDownloadToFileOptions options = new BlobDownloadToFileOptions("<localFilePath>");
    options.setParallelTransferOptions(parallelTransferOptions);

    blobClient.downloadToFileWithResponse(options, null, null);
}

Veri aktarımı seçeneklerini ayarlama hakkında daha fazla bilgi edinmek için bkz . Java ile karşıya yüklemeler ve indirmeler için performans ayarlama.

Kaynaklar

Java için Azure Blob Depolama istemci kitaplığını kullanarak blobları indirme hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın.

Kod örnekleri

REST API işlemleri

Java için Azure SDK, Azure REST API'sinin üzerinde derlenmiş kitaplıklar içerir ve tanıdık Java paradigmalarıyla REST API işlemleriyle etkileşim kurmanızı sağlar. Blobları indirmek için istemci kitaplığı yöntemleri aşağıdaki REST API işlemini kullanır:

  • Blob Alma (REST API)

İstemci kitaplığı kaynakları

  • Bu makale, Java için Blob Depolama geliştirici kılavuzunun bir parçasıdır. Daha fazla bilgi edinmek için Java uygulamanızı derleme makalelerinde geliştirici kılavuzu makalelerinin tam listesine bakın.