Azure File SMB3.0文件共享服务(5)

?

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

?

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

?

  1. Java基本开发环境的搭建,Eclipse的插件安装,IntelliJ IDEA的插件安装,请参考我的文档:

http://cloudapps.blog.51cto.com/3136598/1772092

  1. 关于访问连接串,SDK默认的连接串是指向global Azure的,即"*.core.windows.net",但中国区的Azure的访问的服务URL是".core.chinacloudapi.cn",所以需要在链接字符串中指定EndpointSuffix。

    ?

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

    public
    static
    final String storageConnectionString =

    ???????? "DefaultEndpointsProtocol=http;" +

    ???????? "AccountName=mystorageacctfile;" +

    ???????? "AccountKey=YOURStorageAccountKey;" +

    ???????? "EndpointSuffix=core.chinacloudapi.cn";

    ?

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

    ?

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

具体命名规则请参考:https://msdn.microsoft.com/library/azure/dn167011.aspx

  1. 首先需要初始化存储上下文,得到文件访问句柄:

    storageAccount = CloudStorageAccount.parse(storageConnectionString);

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

    ????????
    ?

    ???????? CloudFileClient fileClient = storageAccount.createCloudFileClient();

    ?

  2. 创建一个新的文件共享:

    CloudFileShare share = fileClient.getShareReference(myFileShare);

    ????????

    if (share.createIfNotExists())

    {

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

    }

    ?

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

    //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");

}

  1. 上传或者下载一个文件共享中的文件,下载文件可以将他通过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());

    }

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

    ?

    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,你可能会碰到如下错误:

?

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

?

http://cloudapps.blog.51cto.com/3136598/1744342

?

时间: 2024-10-23 09:10:53

Azure File SMB3.0文件共享服务(5)的相关文章

Azure File SMB3.0文件共享服务(3)

在Windows上使用Azure文件共享服务 之前简单介绍过,你可以通过SMB 3.0协议,将Azure文件共享挂载在本地,就如使用一个网络驱动器是一样的,但需要注意不同版本的Windows对于SMB协议的支持: 如何在Azure的Windows虚拟机中访问共享文件存储昵? 创建一个Windows 2012虚拟机,可以和你的文件共享存储在一个region,比如都在北京,也可以不在一个地区,一个在北京地区一个在上海地区 持久化你的访问凭证,如果你只是手工挂载了共享服务,那么重新启动了之后,系统就不

Azure File SMB3.0文件共享服务(1)

Azure Storage File是Azure推出的文件共享服务,目前的版本同时支持SMB 2.1和SMB 3.0协议.文件共享服务非常适合那些希望把自己数据中心中使用文件共享的应用程序,在云端需要多个应用之间交互文件和共享存储的应用,异构架构中的数据交互等场景. 本文主要从如下几个方面介绍Azure文件共享服务: 使用场景 Azure File服务技术指标和限制 使用Powershell创建文件共享 在Windows上使用文件共享服务 在Linux上使用文件共享服务 使用Java访问文件共享

Azure File SMB3.0文件共享服务(4)

在Linux上使用Azure文件共享服务 使用SMB 3.0从用户自己的数据连接到Azure,需要加密连接,但目前的Linux SMB客户端都暂时都不支持,Linux的开源社区正在努力将该功能添加到Linux发行版本中,因此上目前,用户无法在自己的数据中心使用Linux机器直接挂载Azure文件共享服务,也无法跨region使用. 本在本文中测试的都是Azure上的Linux虚拟机,使用Azure的文件共享服务,并且和Azure在同一个地区.中国区可以使用Azure File Storage的L

Azure File SMB3.0文件共享服务(2)

使用Powershell创建文件共享 Azure的文件存储结构如下所示,最基本的文件存储包含存储账号,文件共享,在文件共享下面你可以建立文件目录,上传文件: 在开始使用Powershell创建文件共享之前,你需要获得Azure的账号,安装powershell,配置你的账号,请参考我以前的博客,在此不再赘述. 首先,创建Azure storage account,需要设置你的storage账号的名称,以及你的存储账号是创建在那个region,比如中国东部: $StorageAccountName=

Windows Azure文件共享服务--File Service

部署在Windows Azure上的虚拟机之间如何共享文件?例如:Web Server A和Web Server B组成负载均衡集群,两个服务器需要一个共享目录来存储用户上传的文件.通常,大家可能首先想到的是在一个虚拟机上开放一个共享目录或者NFS服务(Linux).其实,Windows Azure的文件共享服务就可以很好的解决这个问题,而且不需要在虚拟机上开放共享目录或者提供NFS服务. 文件共享服务是Windows Azure存储服务的一部分.每个存储账户(Storage Account)都

Azure File文件共享(6):使用Python开发

Azure文件共享服务提供了多种方式的访问接口,包括Powershell,.Net, Java, Python等等,本章主要介绍如何使用Python来访问Azure File存储. 关于Python环境的安装,Azure SDK for python的安装配置,Linux和Windows上的模块升级,请参考博客: http://cloudapps.blog.51cto.com/3136598/1772880 首先,导入Azure storage file所需要的模块: from azure.st

深入解析Microsoft Azure File 服务

Microsoft Azure File Service对大家相对比较陌生,因为这是一个Azure的预览功能,我也是从邮件中得知有这项新的feature,让我感兴趣的是,这个功能可以解决应用程序文件同步的问题. 我总结了几个适用的场景: 依靠文件共享迁移本地应用到Azure VM或云服务 存储共享的应用设置,例如配置文件 存储诊断数据像Log文件等 存储工具和实用工具用来管理和开发Azure VM或者云服务. 当然还有其他的应用场景,这需要我们在实际的应用时去设计.接下来,先解释下什么是Azur

Azure File服务(5): Java开发

使用Java管理Azure文件共享服务 Azure文件共享服务提供了多种方式的访问接口,包括Powershell,.Net, Java, Python等等,本章主要介绍如何使用Java来访问Azure File存储. Java基本开发环境的搭建,Eclipse的插件安装,IntelliJ IDEA的插件安装,请参考我的文档: http://cloudapps.blog.51cto.com/3136598/1772092 关于访问连接串,SDK默认的连接串是指向global Azure的,即"*.

Windows Azure Storage (20) 使用Azure File

<Windows Azure Platform 系列文章目录> 我们在传统IDC托管环境运维网站的时候,经常会遇到多台Web服务器实现负载均衡的时候,后面使用同一个网络存储(SAN).通过这种方式,可以解决文件同步的问题. 服务器部署图,如下图所示: 在Windows Azure公有云环境,想实现上面的架构会比较困难,主要原因有: 1.Azure公有云不允许用户把网络存储(SAN)放置在Azure数据中心 2.如果使用单独一台Azure Virtual Machine模拟网络存储,则这一台Az