Lista blobar med Java
Den här artikeln visar hur du listar blobar med Azure Storage-klientbiblioteket för Java.
Förutsättningar
- Azure-prenumeration – skapa en kostnadsfritt
- Azure Storage-konto – skapa ett lagringskonto
- Java Development Kit (JDK) version 8 eller senare (vi rekommenderar version 17 för bästa möjliga upplevelse)
- Apache Maven används för projekthantering i det här exemplet
Konfigurera din miljö
Om du inte har ett befintligt projekt visar det här avsnittet hur du konfigurerar ett projekt för att arbeta med Azure Blob Storage-klientbiblioteket för Java. Mer information finns i Kom igång med Azure Blob Storage och Java.
Följ de här stegen för att konfigurera projektet om du vill arbeta med kodexemplen i den här artikeln.
Kommentar
Den här artikeln använder verktyget Maven-kompilering för att skapa och köra exempelkoden. Andra byggverktyg, till exempel Gradle, fungerar också med Azure SDK för Java.
Installera paket
pom.xml
Öppna filen i textredigeraren. Installera paketen genom att inkludera BOM-filen eller inkludera ett direkt beroende.
Lägga till importinstruktioner
Lägg till följande import
-uttryck:
import com.azure.core.http.rest.*;
import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
Auktorisering
Auktoriseringsmekanismen måste ha de behörigheter som krävs för att lista en blob. För auktorisering med Microsoft Entra-ID (rekommenderas) behöver du den inbyggda Azure RBAC-rollen Storage Blob Data Reader eller senare. Mer information finns i auktoriseringsvägledningen för REST-API (List Blobs).
Skapa ett klientobjekt
Om du vill ansluta en app till Blob Storage skapar du en instans av BlobServiceClient.
I följande exempel används BlobServiceClientBuilder för att skapa ett BlobServiceClient
objekt med , DefaultAzureCredential
och visar hur du skapar container- och blobklienter om det behövs:
// 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>");
Mer information om hur du skapar och hanterar klientobjekt finns i Skapa och hantera klientobjekt som interagerar med dataresurser.
Om alternativ för bloblistning
När du listar blobar från koden kan du ange alternativ för att hantera hur resultaten returneras från Azure Storage. Du kan ange hur många resultat som ska returneras i varje resultatuppsättning och sedan hämta efterföljande uppsättningar. Du kan ange ett prefix för att returnera blobar vars namn börjar med det tecknet eller strängen. Och du kan lista blobar i en platt liststruktur, eller hierarkiskt. En hierarkisk lista returnerar blobar som om de vore ordnade i mappar.
Om du vill lista blobarna i ett lagringskonto anropar du någon av följande metoder:
Hantera hur många resultat som returneras
Som standard returnerar en liståtgärd upp till 5 000 resultat åt gången, men du kan ange antalet resultat som du vill att varje listningsåtgärd ska returnera. Exemplen som presenteras i den här artikeln visar hur du returnerar resultat på sidor. Mer information om sidnumreringsbegrepp finns i Sidnumrering med Azure SDK för Java.
Filtrera resultat med ett prefix
Om du vill filtrera listan över blobar skickar du en sträng som prefix
parameter till ListBlobsOptions.setPrefix(String prefix). Prefixsträngen kan innehålla ett eller flera tecken. Azure Storage returnerar sedan endast de blobar vars namn börjar med prefixet.
Flat listning jämfört med hierarkisk lista
Blobar i Azure Storage är ordnade i ett platt paradigm snarare än ett hierarkiskt paradigm (som ett klassiskt filsystem). Du kan dock ordna blobar i virtuella kataloger för att efterlikna en mappstruktur. En virtuell katalog utgör en del av blobens namn och indikeras av avgränsartecknet.
Om du vill organisera blobar i virtuella kataloger använder du ett avgränsartecken i blobnamnet. Standardtecken för avgränsare är ett snedstreck (/), men du kan ange valfritt tecken som avgränsare.
Om du namnger dina blobar med en avgränsare kan du välja att lista blobar hierarkiskt. För en hierarkisk listningsåtgärd returnerar Azure Storage alla virtuella kataloger och blobbar under det överordnade objektet. Du kan anropa listningsåtgärden rekursivt för att korsa hierarkin, ungefär som du skulle gå igenom ett klassiskt filsystem programmatiskt.
Använd en platt lista
Som standard returnerar en liståtgärd blobar i en platt lista. I en platt lista ordnas inte blobar efter virtuell katalog.
I följande exempel visas blobarna i den angivna containern med en platt lista:
public void listBlobsFlat(BlobContainerClient blobContainerClient) {
System.out.println("List blobs flat:");
blobContainerClient.listBlobs()
.forEach(blob -> System.out.printf("Name: %s%n", blob.getName()));
}
Exempelutdata liknar:
List blobs flat:
Name: file4.txt
Name: folderA/file1.txt
Name: folderA/file2.txt
Name: folderA/folderB/file3.txt
Du kan också ange alternativ för att filtrera listresultat eller visa ytterligare information. I följande exempel visas blobar med ett angivet prefix och även borttagna blobar:
public void listBlobsFlatWithOptions(BlobContainerClient blobContainerClient) {
ListBlobsOptions options = new ListBlobsOptions()
.setMaxResultsPerPage(2) // Low number for demonstration purposes
.setDetails(new BlobListDetails()
.setRetrieveDeletedBlobs(true));
System.out.println("List blobs flat:");
int i = 0;
Iterable<PagedResponse<BlobItem>> blobPages = blobContainerClient.listBlobs(options, null).iterableByPage();
for (PagedResponse<BlobItem> page : blobPages) {
System.out.printf("Page %d%n", ++i);
page.getElements().forEach(blob -> {
System.out.printf("Name: %s, Is deleted? %b%n",
blob.getName(),
blob.isDeleted());
});
}
}
Exempelutdata liknar:
List blobs flat:
Page 1
Name: file4.txt, Is deleted? false
Name: file5-deleted.txt, Is deleted? true
Page 2
Name: folderA/file1.txt, Is deleted? false
Name: folderA/file2.txt, Is deleted? false
Page 3
Name: folderA/folderB/file3.txt, Is deleted? false
Kommentar
Exempelutdata som visas förutsätter att du har ett lagringskonto med ett platt namnområde. Om du har aktiverat den hierarkiska namnområdesfunktionen för ditt lagringskonto är kataloger inte virtuella. I stället är de konkreta, oberoende föremål. Därför visas kataloger i listan som blobar med noll längd.
Ett alternativ för listalternativ när du arbetar med ett hierarkiskt namnområde finns i Listkataloginnehåll (Azure Data Lake Storage).
Använda en hierarkisk lista
När du anropar en liståtgärd hierarkiskt returnerar Azure Storage de virtuella katalogerna och blobarna på den första nivån i hierarkin.
Om du vill lista blobar hierarkiskt använder du följande metod:
I följande exempel visas blobarna i den angivna containern med hjälp av en hierarkisk lista:
public void listBlobsHierarchicalListing(BlobContainerClient blobContainerClient, String prefix/* ="" */) {
String delimiter = "/";
ListBlobsOptions options = new ListBlobsOptions()
.setPrefix(prefix);
blobContainerClient.listBlobsByHierarchy(delimiter, options, null)
.forEach(blob -> {
if (blob.isPrefix()) {
System.out.printf("Virtual directory prefix: %s%n", delimiter + blob.getName());
listBlobsHierarchicalListing(blobContainerClient, blob.getName());
} else {
System.out.printf("Blob name: %s%n", blob.getName());
}
});
}
Exempelutdata liknar:
List blobs hierarchical:
Blob name: file4.txt
Virtual directory prefix: /folderA/
Blob name: folderA/file1.txt
Blob name: folderA/file2.txt
Virtual directory prefix: /folderA/folderB/
Blob name: folderA/folderB/file3.txt
Kommentar
Blobögonblicksbilder kan inte visas i en hierarkisk listningsåtgärd.
Resurser
Mer information om hur du listar blobar med hjälp av Azure Blob Storage-klientbiblioteket för Java finns i följande resurser.
Kodexempel
REST API-åtgärder
Azure SDK för Java innehåller bibliotek som bygger på Azure REST API, så att du kan interagera med REST API-åtgärder via välbekanta Java-paradigm. Klientbiblioteksmetoderna för att visa blobar använder följande REST API-åtgärd:
- Lista blobar (REST API)
Klientbiblioteksresurser
Se även
Relaterat innehåll
- Den här artikeln är en del av utvecklarguiden för Blob Storage för Java. Mer information finns i den fullständiga listan över utvecklarguideartiklar i Skapa din Java-app.