是否能夠用Java代碼來管理Azure blob? 能夠。在代碼中加入azure-storage-blob依賴。便可使用如下類操做Azure Storage Blob。html
首先,設置VS Code上執行Java 代碼的環境,這裏須要的步驟比較多。徹底參考VS Code for Java文檔便可:https://code.visualstudio.com/docs/java/java-tutorial. java
如下是建立項目步驟:web
1)建立blob-quickstart-v12項目shell
跳轉到blob-quickstart-v12目錄,並在目錄中建立一個data目錄,用於在接下來的代碼中建立本地文件及下載bolb中的文件apache
cd blob-quickstart-v12
mkdir data
2) 修改pom.xml,添加對Java azure-storage-blob SDK的依賴api
<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代碼文件中添加引用app
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\n");
4)添加Stroage Account的鏈接字符串dom
5)建立blobServiceClient對象,同時調用createBlobContainer方法建立容器maven
// 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)ui
// 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("\nUploading to Blob storage as blob:\n\t" + blobClient.getBlobUrl()); // Upload the blob blobClient.uploadFromFile(localPath + fileName);
7)使用containerClient對象的listBlobs方法列出容器中的BlobItem
System.out.println("\nListing blobs..."); // List the blob(s) in the container. for (BlobItem blobItem : containerClient.listBlobs()) { System.out.println("\t" + 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("\nDownloading blob to\n\t " + localPath + downloadFileName); blobClient.downloadToFile(localPath + downloadFileName);
9)使用containerClient對象的delete方法刪除容器
// Clean up System.out.println("\nPress 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\n"); // 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("\nUploading to Blob storage as blob:\n\t" + blobClient.getBlobUrl()); // Upload the blob blobClient.uploadFromFile(localPath + fileName); System.out.println("\nListing blobs..."); // List the blob(s) in the container. for (BlobItem blobItem : containerClient.listBlobs()) { System.out.println("\t" + 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("\nDownloading blob to\n\t " + localPath + downloadFileName); blobClient.downloadToFile(localPath + downloadFileName); // Clean up System.out.println("\nPress 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