azure java_Azure File服务(5): Java开发

本文档介绍了如何使用Java开发环境(如Eclipse和IntelliJ IDEA)访问和管理Azure文件共享服务。内容涉及存储上下文的初始化、文件共享的创建与删除、目录的创建与删除,以及文件的上传、下载和删除。特别指出,对于中国区Azure,需修改连接字符串的EndpointSuffix以指向正确的服务URL,并在需要时调整访问协议为https。
摘要由CSDN通过智能技术生成

使用Java管理Azure文件共享服务

Azure文件共享服务提供了多种方式的访问接口,包括Powershell,.Net, Java, Python等等,本章主要介绍如何使用Java来访问Azure File存储。

Java基本开发环境的搭建,Eclipse的插件安装,IntelliJ IDEA的插件安装,请参考我的文档:关于访问连接串,SDK默认的连接串是指向global Azure的,即"*.core.windows.net",但中国区的Azure的访问的服务URL是".core.chinacloudapi.cn",所以需要在链接字符串中指定EndpointSuffix。

关于存储的访问协议,默认情况下是https协议,但你也可以指定为http协议,一般建议在Azure内部访问存储的时候使用http,而在外部访问的时候使用https进行加密传输。

publicstaticfinalString storageConnectionString=

"DefaultEndpointsProtocol=http;"+

"AccountName=mystorageacctfile;"+

"AccountKey=YOURStorageAccountKey;"+

"EndpointSuffix=core.chinacloudapi.cn";

如果需要进行加密传输,修改DefaultEndpointsProtocol=https.

Fileshare的名字命名是有要求的,例如必须全部小写等,否则在Java里面你会看到如下错误:

845013-20160512183740562-80488296.png首先需要初始化存储上下文,得到文件访问句柄:

storageAccount= CloudStorageAccount.parse(storageConnectionString);

System.out.println(storageAccount.getBlobEndpoint());

CloudFileClient fileClient= storageAccount.createCloudFileClient();

创建一个新的文件共享:

CloudFileShare share= fileClient.getShareReference(myFileShare);

if(share.createIfNotExists())

{

System.out.println("New file share:"+ myFileShare+"created!");

}

文件共享创建完成后,我们在该文件共享下建立一个目录:

//Get a reference to the root directory for the share.

CloudFileDirectory rootDir= share.getRootDirectoryReference();

//Get a reference to the sampledir directory

CloudFileDirectory sampleDir= rootDir.getDirectoryReference(mydirectory);

if(sampleDir.createIfNotExists())

{

System.out.println("sampledir created");

}

else{

System.out.println("sampledir already exists");

}上传或者下载一个文件共享中的文件,下载文件可以将他通过Outstream写入到本地文件等多种方式,本示例中直接打印出来:

//upload a test file to the sampledir

CloudFile cloudFile= sampleDir.getFileReference("hdinsight.publishsettings");

if(!cloudFile.exists())

{

cloudFile.uploadFromFile(testfilePath);

}

else

{

//Download file if exists

System.out.println(cloudFile.downloadText());

}

以下例子展示了如何删除一个文件,删除一个目录,请注意在删除目录的时候,该目录下必须没有任何文件,否则会报错:

CloudFile cloudFile= sampleDir.getFileReference(testFilename);

//Delete specified file

if( cloudFile.deleteIfExists() )

{

System.out.println(testFilename+ " was deleted!");

}

//Get a reference to the root directory for the share.

CloudFileDirectory rootDir= share.getRootDirectoryReference();

//Get a reference to the sampledir directory

CloudFileDirectory sampleDir= rootDir.getDirectoryReference(mydirectory);

// Delete the directory

if( sampleDir.deleteIfExists() )

{

System.out.println("Directory "+ sampleDir+" was deleted!");

}

10.关于在你调用Azure file接口的时候,使用https链接,即将链接字符串中的DefaultEndpointsProtocol设置为https,你可能会碰到如下错误:

845013-20160512183741405-1647560013.png

即使你使用的是最新的Azure China的WoSign的证书,也会出现上述问题,具体原因和Azure China没有关系,你懂的:)解决办法请参考我的博文:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值