Výpis objektů blob pomocí Javy
Tento článek ukazuje, jak vypsat objekty blob pomocí klientské knihovny azure Storage pro Javu.
Požadavky
- Tento článek předpokládá, že už máte projekt nastavený tak, aby fungoval s klientskou knihovnou služby Azure Blob Storage pro Javu. Další informace o nastavení projektu, včetně instalace balíčku, přidání
import
direktiv a vytvoření autorizovaného objektu klienta, najdete v tématu Začínáme se službou Azure Storage a Javou. - Autorizační mechanismus musí mít oprávnění k výpisu objektů blob. Další informace najdete v pokynech k autorizaci pro následující operaci rozhraní REST API:
Informace o možnostech výpisu objektů blob
Když vypíšete objekty blob z kódu, můžete zadat možnosti pro správu způsobu vrácení výsledků ze služby Azure Storage. Můžete zadat počet výsledků, které se mají vrátit v každé sadě výsledků, a pak načíst následující sady. Můžete zadat předponu pro vrácení objektů blob, jejichž názvy začínají tímto znakem nebo řetězcem. Objekty blob můžete vypsat v ploché struktuře výpisu nebo hierarchicky. Hierarchický výpis vrací objekty blob, jako by byly uspořádány do složek.
Pokud chcete zobrazit seznam objektů blob v účtu úložiště, zavolejte jednu z těchto metod:
Správa počtu vrácených výsledků
Ve výchozím nastavení vrátí operace výpisu najednou až 5 000 výsledků, ale můžete zadat počet výsledků, které má každá operace výpisu vrátit. Příklady uvedené v tomto článku ukazují, jak vrátit výsledky na stránkách. Další informace o konceptech stránkování najdete v tématu Stránkování pomocí sady Azure SDK pro Javu.
Filtrování výsledků pomocí předpony
Chcete-li filtrovat seznam objektů blob, předejte řetězec jako prefix
parametr ListBlobsOptions.setPrefix(Předpona řetězce). Řetězec předpony může obsahovat jeden nebo více znaků. Azure Storage pak vrátí pouze objekty blob, jejichž názvy začínají danou předponou.
Plochý výpis versus hierarchický výpis
Objekty blob ve službě Azure Storage jsou uspořádané do plochého paradigmatu místo hierarchického paradigmatu (jako je klasický systém souborů). Objekty blob ale můžete uspořádat do virtuálních adresářů , abyste napodobili strukturu složek. Virtuální adresář tvoří část názvu objektu blob a je označen znakem oddělovače.
Pokud chcete objekty blob uspořádat do virtuálních adresářů, použijte v názvu objektu blob znak oddělovače. Výchozí znak oddělovače je lomítko (/), ale jako oddělovač můžete zadat libovolný znak.
Pokud objekty blob pojmenujete pomocí oddělovače, můžete se rozhodnout, jestli chcete objekty blob vypsat hierarchicky. Pro hierarchickou operaci výpisu vrátí Azure Storage všechny virtuální adresáře a objekty blob pod nadřazeným objektem. Operaci výpisu můžete volat rekurzivně a procházet hierarchii podobně jako při procházení klasického systému souborů prostřednictvím kódu programu.
Použití plochého výpisu
Operace výpisu ve výchozím nastavení vrací objekty blob v plochém výpisu. V plochém výpisu nejsou objekty blob uspořádané podle virtuálního adresáře.
Následující příklad uvádí objekty blob v zadaném kontejneru pomocí plochého výpisu:
public void listBlobsFlat(BlobContainerClient blobContainerClient) {
System.out.println("List blobs flat:");
blobContainerClient.listBlobs()
.forEach(blob -> System.out.printf("Name: %s%n", blob.getName()));
}
Ukázkový výstup je podobný následujícímu:
List blobs flat:
Name: file4.txt
Name: folderA/file1.txt
Name: folderA/file2.txt
Name: folderA/folderB/file3.txt
Můžete také zadat možnosti filtrování výsledků seznamu nebo zobrazit další informace. Následující příklad uvádí objekty blob se zadanou předponou a také uvádí odstraněné objekty blob:
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());
});
}
}
Ukázkový výstup je podobný následujícímu:
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
Poznámka:
Zobrazený ukázkový výstup předpokládá, že máte účet úložiště s plochým oborem názvů. Pokud jste pro svůj účet úložiště povolili funkci hierarchického oboru názvů, adresáře nejsou virtuální. Místo toho jsou betonové, nezávislé objekty. V důsledku toho se adresáře v seznamu zobrazují jako objekty blob nulové délky.Alternativní možnost výpisu při práci s hierarchickým oborem názvů najdete v tématu Výpis obsahu adresáře (Azure Data Lake Storage Gen2).
Použití hierarchického výpisu
Při volání operace výpisu hierarchicky vrátí Azure Storage virtuální adresáře a objekty blob na první úrovni hierarchie.
Pokud chcete zobrazit seznam objektů blob hierarchicky, použijte následující metodu:
Následující příklad uvádí objekty blob v zadaném kontejneru pomocí hierarchického výpisu:
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());
}
});
}
Ukázkový výstup je podobný následujícímu:
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
Poznámka:
Snímky objektů blob nelze uvést v hierarchické operaci výpisu.
Zdroje informací
Další informace o tom, jak vypsat objekty blob pomocí klientské knihovny služby Azure Blob Storage pro Javu, najdete v následujících zdrojích informací.
Operace rozhraní REST API
Sada Azure SDK pro Javu obsahuje knihovny, které jsou postavené na rozhraní Azure REST API a umožňují interakci s operacemi rozhraní REST API prostřednictvím známých paradigmat Javy. Metody klientské knihovny pro výpis objektů blob používají následující operaci rozhraní REST API:
- Výpis objektů blob (REST API)
Ukázky kódu
Prostředky klientské knihovny
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro