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
- Azure aboneliği - ücretsiz bir abonelik oluşturun
- Azure depolama hesabı - depolama hesabı oluşturma
- Java Development Kit (JDK) sürüm 8 veya üzeri (en iyi deneyim için sürüm 17'yi öneririz)
- Apache Maven bu örnekte proje yönetimi için kullanılır
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 DefaultAzureCredential
oluş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ı
İlgili içerik
- 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.