Azure 存储中的 Blob 已组织成容器。 必须先创建容器,才能上传 Blob。 本文介绍了如何使用适用于 Java 的 Azure 存储客户端库来创建容器。
- Azure 订阅 - 创建试用订阅。
- Azure 存储帐户 - 创建存储帐户
- Java 开发工具包 (JDK) 8 或更高版本(我们建议使用版本 17 以获得最佳体验)
- 在本示例中,Apache Maven 用于项目管理
如果没有现有项目,请查看本部分,其中介绍了如何设置项目来使用适用于 Java 的 Azure Blob 存储客户端库。 有关详细信息,请参阅 Azure Blob 存储和 Java 入门。
要使用本文中的代码示例,请按照以下步骤设置项目。
备注
本文使用 Maven 生成工具来生成和运行示例代码。 其他生成工具(例如 Gradle)也可与 Azure SDK for Java 一起使用。
在文本编辑器中打开 pom.xml
文件。 通过包括 BOM 文件或包括直接依赖项来安装包。
添加以下 import
语句:
import com.azure.storage.blob.*;
授权机制必须具有创建容器所需的权限。 若要使用 Microsoft Entra ID 进行授权(建议),需有 Azure RBAC 内置角色“存储 Blob 数据参与者”或更高级别的角色。 有关详细信息,请参阅创建容器 (REST API) 的授权指南。
若要将应用连接到 Blob 存储,请创建 BlobServiceClient 的实例。
以下示例使用 BlobServiceClientBuilder 生成一个使用 DefaultAzureCredential
的 BlobServiceClient
对象,并演示如何创建容器和 Blob 客户端(如果需要):
// 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.chinacloudapi.cn/")
.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>");
要详细了解如何创建和管理客户端对象,请参阅 创建和管理与数据资源交互的客户端对象。
容器名称必须是有效的 DNS 名称,因为它是用于对容器或其 Blob 寻址的唯一 URI 的一部分。 为容器命名时,请遵循以下规则:
- 容器名称的长度可以是 3 到 63 个字符。
- 容器名称必须以字母或数字开头,并且只能包含小写字母、数字和短划线 (-) 字符。
- 容器名称中不允许出现连续的短划线字符。
容器资源的 URI 的格式如下:
https://my-account-name.blob.core.chinacloudapi.cn/my-container-name
若要创建容器,请从 BlobServiceClient
类中调用以下方法之一:
还可以使用 BlobContainerClient
类中的以下方法之一创建容器:
将立即在存储帐户下创建容器。 无法将一个容器嵌套在另一个容器下。 若采用 create
和 createBlobContainer
方法,那么会在已存在同名容器的情况下引发异常。
以下示例通过 BlobServiceClient
对象创建容器:
public BlobContainerClient createContainer(BlobServiceClient blobServiceClient, String containerName) {
// Create the container using the service client object
BlobContainerClient blobContainerClient = blobServiceClient.createBlobContainer(containerName);
return blobContainerClient;
}
根容器充当存储帐户的默认容器。 每个存储帐户只能包含一个根容器,该容器必须命名为 $root。 必须显式创建或删除根容器。
可以引用存储在根容器中的 Blob,而无需包含根容器名称。 根容器允许引用位于存储帐户层次结构顶层的 Blob。 例如,可通过以下方式引用根容器中的 blob:
https://accountname.blob.core.chinacloudapi.cn/default.html
以下示例以容器名称 $root 创建新 BlobContainerClient
对象,然后创建容器(如果存储帐户中尚不存在该容器):
public void createRootContainer(BlobServiceClient blobServiceClient) {
// Creates a new BlobContainerClient object by appending the containerName to
// the end of the URI
BlobContainerClient blobContainerClient = blobServiceClient.getBlobContainerClient("$root");
// If the container does not already exist, create it using the container client
blobContainerClient.createIfNotExists();
}
若要详细了解如何使用适用于 Java 的 Azure Blob 存储客户端库创建容器,请参阅以下资源。
Azure SDK for Java 包含基于 Azure REST API 而生成的库,允许你通过熟悉的 Java 范例与 REST API 操作进行交互。 用于创建容器的客户端库方法使用以下 REST API 操作:
- 创建容器 (REST API)
- 本文是适用于 Java 的 Blob 存储开发人员指南的一部分。 若要了解详细信息,请参阅生成 Java 应用中的开发人员指南文章的完整列表。