Udostępnij za pośrednictwem


Pobieranie obiektu blob za pomocą języka Java

W tym artykule pokazano, jak pobrać obiekt blob przy użyciu biblioteki klienta usługi Azure Storage dla języka Java. Dane obiektu blob można pobrać do różnych miejsc docelowych, w tym lokalną ścieżkę pliku, strumień lub ciąg tekstowy. Możesz również otworzyć strumień obiektów blob i odczytać go.

Wymagania wstępne

Konfigurowanie środowiska

Jeśli nie masz istniejącego projektu, w tej sekcji pokazano, jak skonfigurować projekt do pracy z biblioteką klienta usługi Azure Blob Storage dla języka Java. Aby uzyskać więcej informacji, zobacz Rozpoczynanie pracy z usługami Azure Blob Storage i Java.

Aby pracować z przykładami kodu w tym artykule, wykonaj następujące kroki, aby skonfigurować projekt.

Uwaga

W tym artykule użyto narzędzia kompilacji maven do skompilowania i uruchomienia przykładowego kodu. Inne narzędzia kompilacji, takie jak Gradle, współpracują również z zestawem Azure SDK dla języka Java.

Instalowanie pakietów

pom.xml Otwórz plik w edytorze tekstów. Zainstaluj pakiety, dołączając plik BOM lub uwzględniając bezpośrednią zależność.

Dodawanie instrukcji importu

Dodaj następujące instrukcje import:

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;

Autoryzacja

Mechanizm autoryzacji musi mieć niezbędne uprawnienia do wykonania operacji pobierania. Aby uzyskać autoryzację przy użyciu identyfikatora Entra firmy Microsoft (zalecane), potrzebujesz wbudowanej kontroli dostępu opartej na rolach platformy Azure czytnika danych obiektów blob usługi Storage lub nowszego. Aby dowiedzieć się więcej, zobacz wskazówki dotyczące autoryzacji dotyczące pobierania obiektu blob (interfejsu API REST).

Tworzenie obiektu klienta

Aby połączyć aplikację z usługą Blob Storage, utwórz wystąpienie klasy BlobServiceClient.

W poniższym przykładzie użyto obiektu BlobServiceClientBuilder do skompilowania BlobServiceClient obiektu przy użyciu metody DefaultAzureCredentiali pokazano, jak utworzyć klientów kontenerów i obiektów blob, w razie potrzeby:

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

Aby dowiedzieć się więcej na temat tworzenia obiektów klienta i zarządzania nimi, zobacz Tworzenie obiektów klienta korzystających z zasobów danych i zarządzanie nimi.

Pobieranie obiektu blob

Aby pobrać obiekt blob, możesz użyć dowolnej z następujących metod:

Pobieranie do ścieżki pliku

Poniższy przykład pobiera obiekt blob do lokalnej ścieżki pliku:

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

Pobieranie do strumienia

Poniższy przykład pobiera obiekt blob do OutputStream obiektu:

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

Pobieranie do ciągu

W poniższym przykładzie przyjęto założenie, że obiekt blob jest plikiem tekstowym i pobiera obiekt blob do String obiektu:

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

Pobieranie ze strumienia

Poniższy przykład pobiera obiekt blob, otwierając BlobInputStream obiekt i odczytując ze strumienia:

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

Pobieranie blokowego obiektu blob z opcjami konfiguracji

Podczas pobierania obiektu blob można zdefiniować opcje konfiguracji biblioteki klienta. Te opcje można dostosować, aby zwiększyć wydajność i zwiększyć niezawodność. W poniższych przykładach kodu pokazano, jak używać obiektu BlobDownloadToFileOptions do definiowania opcji konfiguracji podczas wywoływania metody pobierania.

Określanie opcji transferu danych podczas pobierania

Wartości można skonfigurować w elemercie ParallelTransferOptions , aby zwiększyć wydajność operacji transferu danych. W zależności od potrzeb aplikacji można dostroić następujące wartości do pobrania:

  • blockSize: maksymalny rozmiar bloku do przeniesienia dla każdego żądania. Tę wartość można ustawić przy użyciu metody setBlockSizeLong .
  • maxConcurrency: maksymalna liczba żądań równoległych wydanych w danym momencie w ramach pojedynczego transferu równoległego. Tę wartość można ustawić przy użyciu metody setMaxConcurrency .

Dodaj następującą import dyrektywę do pliku, która ma zostać użyta ParallelTransferOptions do pobrania:

import com.azure.storage.common.*;

Poniższy przykład kodu pokazuje, jak ustawić wartości dla ParallelTransferOptions i uwzględnić opcje w ramach BlobDownloadToFileOptions wystąpienia. Wartości podane w tym przykładzie nie są przeznaczone do zalecenia. Aby prawidłowo dostosować te wartości, należy wziąć pod uwagę konkretne potrzeby aplikacji.

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

Aby dowiedzieć się więcej na temat dostrajania opcji transferu danych, zobacz Dostosowywanie wydajności przekazywania i pobierania za pomocą języka Java.

Zasoby

Aby dowiedzieć się więcej na temat pobierania obiektów blob przy użyciu biblioteki klienta usługi Azure Blob Storage dla języka Java, zobacz następujące zasoby.

Przykłady kodu

Operacje interfejsu API REST

Zestaw Azure SDK dla języka Java zawiera biblioteki, które bazują na interfejsie API REST platformy Azure, co umożliwia interakcję z operacjami interfejsu API REST za pomocą znanych paradygmatów języka Java. Metody biblioteki klienta do pobierania obiektów blob używają następującej operacji interfejsu API REST:

Zasoby biblioteki klienta

  • Ten artykuł jest częścią przewodnika dla deweloperów usługi Blob Storage dla języka Java. Aby dowiedzieć się więcej, zobacz pełną listę artykułów z przewodnika dla deweloperów w temacie Tworzenie aplikacji Java.