了解开发使用 Azure 文件存储来存储数据的 Java 应用程序的基础知识。 使用 Azure 文件存储 API 创建控制台应用程序并了解基本操作:
创建和删除 Azure 文件共享
创建和删除目录
枚举 Azure 文件共享中的文件和目录
上传、下载和删除文件
查看 Azure 存储代码示例存储库
如需易用且能够下载和运行的端到端 Azure 存储代码示例,请查看我们的
Azure 存储示例
列表。
文件共享类型
创建 Java 应用程序
若要生成示例,需要 Java 开发工具包 (JDK) 和
适用于 Java 的 Azure 存储 SDK
。 此外,应该已经创建了一个 Azure 存储帐户。
设置应用程序以使用 Azure 文件
若要使用 Azure 文件存储 API,请将以下代码添加到要通过其访问 Azure 文件存储的 Java 文件的顶部。
// Include the following imports to use Azure Files APIs
import com.azure.storage.file.share.*;
设置 Azure 存储连接字符串
要使用 Azure 文件,需要连接到 Azure 存储帐户。 配置连接字符串并使用它连接到存储帐户。 定义用于保存连接字符串的静态变量。
将 <storage_account_name> 和 <storage_account_key> 替换为存储帐户的实际值。
// Define the connection-string.
// Replace the values, including <>, with
// the values from your storage account.
public static final String connectStr =
"DefaultEndpointsProtocol=https;" +
"AccountName=<storage_account_name>;" +
"AccountKey=<storage_account_key>";
访问 Azure 文件共享
若要访问 Azure 文件存储,请创建一个
ShareClient
对象。 使用
ShareClientBuilder
类生成新的
ShareClient
对象。
ShareClient shareClient = new ShareClientBuilder()
.connectionString(connectStr).shareName(shareName)
.buildClient();
创建文件共享
Azure 文件存储中的所有文件和目录都存储在名为共享的容器内。
如果共享已经存在,则
ShareClient.create
方法将引发异常。 将对 create 的调用置于
try/catch
块中并处理异常。
public static Boolean createFileShare(String connectStr, String shareName)
ShareClient shareClient = new ShareClientBuilder()
.connectionString(connectStr).shareName(shareName)
.buildClient();
shareClient.create();
return true;
catch (Exception e)
System.out.println("createFileShare exception: " + e.getMessage());
return false;
删除文件共享
以下示例代码将删除文件共享。
通过调用
ShareClient.delete
方法删除共享。
public static Boolean deleteFileShare(String connectStr, String shareName)
ShareClient shareClient = new ShareClientBuilder()
.connectionString(connectStr).shareName(shareName)
.buildClient();
shareClient.delete();
return true;
catch (Exception e)
System.out.println("deleteFileShare exception: " + e.getMessage());
return false;
将文件置于子目录中,而不是将其全部置于根目录中,以便对存储进行整理。
以下代码通过调用
ShareDirectoryClient.create
创建目录。 示例方法返回一个
Boolean
值,该值指示它是否成功创建了目录。
public static Boolean createDirectory(String connectStr, String shareName,
String dirName)
ShareDirectoryClient dirClient = new ShareFileClientBuilder()
.connectionString(connectStr).shareName(shareName)
.resourcePath(dirName)
.buildDirectoryClient();
dirClient.create();
return true;
catch (Exception e)
System.out.println("createDirectory exception: " + e.getMessage());
return false;
删除目录是一项简单的任务。 你无法删除仍包含文件或子目录的目录。
如果目录不存在或不为空,则
ShareDirectoryClient.delete
方法将引发异常。 将对 delete 的调用置于
try/catch
块中并处理异常。
public static Boolean deleteDirectory(String connectStr, String shareName,
String dirName)
ShareDirectoryClient dirClient = new ShareFileClientBuilder()
.connectionString(connectStr).shareName(shareName)
.resourcePath(dirName)
.buildDirectoryClient();
dirClient.delete();
return true;
catch (Exception e)
System.out.println("deleteDirectory exception: " + e.getMessage());
return false;
枚举 Azure 文件共享中的文件和目录
通过调用
ShareDirectoryClient.listFilesAndDirectories
获取文件和目录的列表。 该方法会返回可循环访问的
ShareFileItem
对象的列表。 以下代码将列出 dirName 参数指定的目录内的文件和目录。
public static Boolean enumerateFilesAndDirs(String connectStr, String shareName,
String dirName)
ShareDirectoryClient dirClient = new ShareFileClientBuilder()
.connectionString(connectStr).shareName(shareName)
.resourcePath(dirName)
.buildDirectoryClient();
dirClient.listFilesAndDirectories().forEach(
fileRef -> System.out.printf("Resource: %s\t Directory? %b\n",
fileRef.getName(), fileRef.isDirectory())
return true;
catch (Exception e)
System.out.println("enumerateFilesAndDirs exception: " + e.getMessage());
return false;
了解如何从本地存储上传文件。
以下代码通过调用
ShareFileClient.uploadFromFile
方法将本地文件上传到 Azure 文件存储。 以下示例方法返回一个
Boolean
值,该值指示它是否成功上传了指定的文件。
public static Boolean uploadFile(String connectStr, String shareName,
String dirName, String fileName)
ShareDirectoryClient dirClient = new ShareFileClientBuilder()
.connectionString(connectStr).shareName(shareName)
.resourcePath(dirName)
.buildDirectoryClient();
ShareFileClient fileClient = dirClient.getFileClient(fileName);
fileClient.create(1024);
fileClient.uploadFromFile(fileName);
return true;
catch (Exception e)
System.out.println("uploadFile exception: " + e.getMessage());
return false;
较常见的操作之一是从 Azure 文件共享下载文件。
以下示例将指定文件下载到 destDir 参数中指定的本地目录。 示例方法通过在下载的文件名前面追加日期和时间,来实现文件名的唯一性。
public static Boolean downloadFile(String connectStr, String shareName,
String dirName, String destDir,
String fileName)
ShareDirectoryClient dirClient = new ShareFileClientBuilder()
.connectionString(connectStr).shareName(shareName)
.resourcePath(dirName)
.buildDirectoryClient();
ShareFileClient fileClient = dirClient.getFileClient(fileName);
// Create a unique file name
String date = new java.text.SimpleDateFormat("yyyyMMdd-HHmmss").format(new java.util.Date());
String destPath = destDir + "/"+ date + "_" + fileName;
fileClient.downloadToFile(destPath);
return true;
catch (Exception e)
System.out.println("downloadFile exception: " + e.getMessage());
return false;
另一项常见的 Azure 文件操作是删除文件。
以下代码将删除指定文件。 首先,该示例基于 dirName 参数创建一个
ShareDirectoryClient
。 然后,代码根据 fileName 参数从目录客户端获取
ShareFileClient
。 最后,示例方法调用
ShareFileClient.delete
来删除文件。
public static Boolean deleteFile(String connectStr, String shareName,
String dirName, String fileName)
ShareDirectoryClient dirClient = new ShareFileClientBuilder()
.connectionString(connectStr).shareName(shareName)
.resourcePath(dirName)
.buildDirectoryClient();
ShareFileClient fileClient = dirClient.getFileClient(fileName);
fileClient.delete();
return true;
catch (Exception e)
System.out.println("deleteFile exception: " + e.getMessage());
return false;
如果还想更多地了解其他 Azure 存储 API,请点击以下链接。
面向 Java 开发人员的 Azure
Azure SDK for Java
适用于 Android 的 Azure SDK
适用于 Java SDK 的 Azure 文件共享客户端库参考
Azure 存储空间服务 REST API
Azure 存储团队博客
使用 AzCopy 命令行实用工具传输数据
对 Azure 文件进行故障排除
有关使用已弃用的 Java 版本 8 SDK 的相关代码示例,请参阅
使用 Java 版本 8 的代码示例
。