• 【Azure Developer】VS Code运行Java 版Azure Storage SDK操作Blob (新建Container, 上传Blob文件,下载及清理)


    问题描述

    是否可以用Java代码来管理Azure blob? 可以。在代码中加入azure-storage-blob依赖。即可使用以下类操作Azure Storage Blob。

    • BlobServiceClient:BlobServiceClient 类可用于操纵 Azure 存储资源和 blob 容器。 存储帐户为 Blob 服务提供顶级命名空间。
    • BlobServiceClientBuilder:BlobServiceClientBuilder 类提供流畅的生成器 API,以帮助对 BlobServiceClient 对象的配置和实例化。
    • BlobContainerClient:BlobContainerClient 类可用于操纵 Azure 存储容器及其 blob。
    • BlobClient:BlobClient 类可用于操纵 Azure 存储 blob。
    • BlobItem:BlobItem 类表示从对 listBlobs 的调用返回的单个 blob。

    执行步骤

    首先,设置VS Code上执行Java 代码的环境,这里需要的步骤比较多。完全参考VS Code for Java文档即可:https://code.visualstudio.com/docs/java/java-tutorial

    以下是创建项目步骤:

    1)创建blob-quickstart-v12项目

    跳转到blob-quickstart-v12目录,并在目录中创建一个data目录,用于在接下来的代码中创建本地文件及下载bolb中的文件

    cd blob-quickstart-v12
    
    mkdir data

    2)   修改pom.xml,添加对Java azure-storage-blob SDK的依赖

      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>com.azure</groupId>
          <artifactId>azure-storage-blob</artifactId>
          <version>12.6.0</version>
      </dependency>
      </dependencies>

    3)在App.java代码文件中添加引用

    package com.blobs.quickstart;
    
    /**
     * Azure blob storage v12 SDK quickstart
     */
    import com.azure.storage.blob.*;
    import com.azure.storage.blob.models.*;
    import java.io.*;
    
    public class App
    {
        public static void main( String[] args ) throws IOException
        {
            System.out.println("Azure Blob storage v12 - Java quickstart sample
    ");

    4)添加Stroage Account的连接字符串

    5)创建blobServiceClient对象,同时调用createBlobContainer方法创建容器

            // Create a BlobServiceClient object which will be used to create a container client
            BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().connectionString(connectStr).buildClient();
    
            //Create a unique name for the container
            String containerName = "quickstartblobs" + java.util.UUID.randomUUID();
    
            // Create the container and return a container client object
            BlobContainerClient containerClient = blobServiceClient.createBlobContainer(containerName);

    6)创建BlobClient对象,同时调用uploadFromFile方法上传文件(.tx)

            // Create a local file in the ./data/ directory for uploading and downloading
            String localPath = "./data/";
            String fileName = "quickstart" + java.util.UUID.randomUUID() + ".txt";
            File localFile = new File(localPath + fileName);
    
            // Write text to the file
            FileWriter writer = new FileWriter(localPath + fileName, true);
            writer.write("Hello, World!");
            writer.close();
    
            // Get a reference to a blob
            BlobClient blobClient = containerClient.getBlobClient(fileName);
    
            System.out.println("
    Uploading to Blob storage as blob:
    	" + blobClient.getBlobUrl());
    
            // Upload the blob
            blobClient.uploadFromFile(localPath + fileName);

    7)使用containerClient对象的listBlobs方法列出容器中的BlobItem

            System.out.println("
    Listing blobs...");
    
            // List the blob(s) in the container.
            for (BlobItem blobItem : containerClient.listBlobs()) {
                System.out.println("	" + blobItem.getName());
            }

    8)使用blobClient对象的downloadToFile方法下载文件到本地

            // Download the blob to a local file
            // Append the string "DOWNLOAD" before the .txt extension so that you can see both files.
            String downloadFileName = fileName.replace(".txt", "DOWNLOAD.txt");
            File downloadedFile = new File(localPath + downloadFileName);
    
            System.out.println("
    Downloading blob to
    	 " + localPath + downloadFileName);
    
            blobClient.downloadToFile(localPath + downloadFileName);

    9)使用containerClient对象的delete方法删除容器

            // Clean up
            System.out.println("
    Press the Enter key to begin clean up");
            System.console().readLine();
    
            System.out.println("Deleting blob container...");
            containerClient.delete();
    
            System.out.println("Deleting the local source and downloaded files...");
            localFile.delete();
            downloadedFile.delete();
    
            System.out.println("Done");

    10) 在VS Code中调试或执行,右键选择Run/Debug

    全部代码

    App.java文件

    package com.blobs.quickstart;
    
    /**
     * Azure blob storage v12 SDK quickstart
     */
    import com.azure.storage.blob.*;
    import com.azure.storage.blob.models.*;
    import java.io.*;
    
    public class App
    {
        public static void main( String[] args ) throws IOException
        {
            System.out.println("Azure Blob storage v12 - Java quickstart sample
    ");
    
            // Retrieve the connection string for use with the application. The storage
            // connection string is stored in an environment variable on the machine
            // running the application called AZURE_STORAGE_CONNECTION_STRING. If the environment variable
            // is created after the application is launched in a console or with
            // Visual Studio, the shell or application needs to be closed and reloaded
            // to take the environment variable into account.
            String connectStr ="DefaultEndpointsProtocol=https;AccountName=xxxxxxxx;AccountKey=xxxxxxxxxxxxxxx;EndpointSuffix=core.chinacloudapi.cn";// System.getenv("AZURE_STORAGE_CONNECTION_STRING");
    
            // Create a BlobServiceClient object which will be used to create a container client
            BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().connectionString(connectStr).buildClient();
    
            //Create a unique name for the container
            String containerName = "quickstartblobs" + java.util.UUID.randomUUID();
    
            // Create the container and return a container client object
            BlobContainerClient containerClient = blobServiceClient.createBlobContainer(containerName);
    
            // Create a local file in the ./data/ directory for uploading and downloading
            String localPath = "./data/";
            String fileName = "quickstart" + java.util.UUID.randomUUID() + ".txt";
            File localFile = new File(localPath + fileName);
    
            // Write text to the file
            FileWriter writer = new FileWriter(localPath + fileName, true);
            writer.write("Hello, World!");
            writer.close();
    
            // Get a reference to a blob
            BlobClient blobClient = containerClient.getBlobClient(fileName);
    
            System.out.println("
    Uploading to Blob storage as blob:
    	" + blobClient.getBlobUrl());
    
            // Upload the blob
            blobClient.uploadFromFile(localPath + fileName);
    
            System.out.println("
    Listing blobs...");
    
            // List the blob(s) in the container.
            for (BlobItem blobItem : containerClient.listBlobs()) {
                System.out.println("	" + blobItem.getName());
            }
    
            // Download the blob to a local file
            // Append the string "DOWNLOAD" before the .txt extension so that you can see both files.
            String downloadFileName = fileName.replace(".txt", "DOWNLOAD.txt");
            File downloadedFile = new File(localPath + downloadFileName);
    
            System.out.println("
    Downloading blob to
    	 " + localPath + downloadFileName);
    
            blobClient.downloadToFile(localPath + downloadFileName);
    
            // Clean up
            System.out.println("
    Press the Enter key to begin clean up");
            System.console().readLine();
    
            System.out.println("Deleting blob container...");
            containerClient.delete();
    
            System.out.println("Deleting the local source and downloaded files...");
            localFile.delete();
            downloadedFile.delete();
    
            System.out.println("Done");
        }
    }

    pom.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.blobs.quickstart</groupId>
      <artifactId>blob-quickstart-v12</artifactId>
      <version>1.0-SNAPSHOT</version>
    
      <name>blob-quickstart-v12</name>
      <!-- FIXME change it to the project's website -->
      <url>http://www.example.com</url>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
      </properties>
    
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>com.azure</groupId>
          <artifactId>azure-storage-blob</artifactId>
          <version>12.6.0</version>
      </dependency>
      </dependencies>
    
      <build>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
          <plugins>
            <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
            <plugin>
              <artifactId>maven-clean-plugin</artifactId>
              <version>3.1.0</version>
            </plugin>
            <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
            <plugin>
              <artifactId>maven-resources-plugin</artifactId>
              <version>3.0.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.8.0</version>
            </plugin>
            <plugin>
              <artifactId>maven-surefire-plugin</artifactId>
              <version>2.22.1</version>
            </plugin>
            <plugin>
              <artifactId>maven-jar-plugin</artifactId>
              <version>3.0.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-install-plugin</artifactId>
              <version>2.5.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-deploy-plugin</artifactId>
              <version>2.8.2</version>
            </plugin>
            <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
            <plugin>
              <artifactId>maven-site-plugin</artifactId>
              <version>3.7.1</version>
            </plugin>
            <plugin>
              <artifactId>maven-project-info-reports-plugin</artifactId>
              <version>3.0.0</version>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </project>

    参考资料

    Getting Started with Java in VS Code:https://code.visualstudio.com/docs/java/java-tutorial

    快速入门:使用 Java v12 SDK 管理 blob: https://docs.azure.cn/zh-cn/storage/blobs/storage-quickstart-blobs-java#code-examples

  • 相关阅读:
    (转)关于IBM小机P520的面板使用
    (转)mysql的sql_mode合理设置
    (转)Mysql技术内幕InnoDB存储引擎-事务&备份&性能调优
    杨辉三角
    异或的陷阱(转)
    通过数组看栈堆
    数组的一些知识点和插入选择冒泡排序
    运算符
    Java的变量相关
    有符号的数据表示法(原、反、补)
  • 原文地址:https://www.cnblogs.com/lulight/p/14110000.html
Copyright © 2020-2023  润新知