OBS JAVA SDK Demo:下载对象到本地文件系统

举报
lanxinliuli 发表于 2019/07/18 17:34:09 2019/07/18
1w+ 0 0
【摘要】 1 背景介绍OBS桶内的对象可以下载到本地文件系统,本文档将展示如何调用OBS SDK实现对象下载到本地的功能。2 代码展示需要先下载OBS最新的JAVA SDK,参考官网链接:https://developer.huaweicloud.com/sdk?OBS,并在自己的项目中导入SDK中的JAR包。前提条件:已创建OBS桶,且桶内 已上传文件f1.txt代码示例:将f1...

1      背景介绍

OBS桶内的对象可以下载到本地文件系统,本文档将展示如何调用OBS SDK实现对象下载到本地的功能。

2      代码展示

需要先下载OBS最新的JAVA SDK,参考官网链接:https://developer.huaweicloud.com/sdk?OBS,并在自己的项目中导入SDK中的JAR包。

前提条件:已创建OBS桶,且桶内 已上传文件f1.txt

代码示例:将f1.txt下载到本地保存为downf1.txt

package samples_java;

import com.obs.services.ObsClient;
import com.obs.services.ObsConfiguration;
import com.obs.services.exception.ObsException;
import com.obs.services.model.DownloadFileRequest;
import com.obs.services.model.DownloadFileResult;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

public class DownloadObject {
     private static final String endPoint = " XXX";

     private static final String ak = "XXX";

     private static final String sk = "XXX";

     private static ObsClient obsClient;

     private static DownloadFileRequest downloadFileRequest;

     private static String bucketName = "obs-bucket001";

     private static String objectName = "f1.txt";

     private static String dstPath = "E://downf1.txt";

     public static void main(String[] args)
             throws IOException
     {
         ObsConfiguration config = new ObsConfiguration();
         config.setSocketTimeout(30000);
         config.setConnectionTimeout(10000);
         config.setEndPoint(endPoint);
         try
         {
             /*
              * Constructs a obs client instance with your account for accessing OBS
              */
             obsClient = new ObsClient(ak, sk, config);

             /*
              * Download Object
              */
             downloadFileRequest = new DownloadFileRequest(bucketName,objectName,dstPath);
             downloadFileRequest.setTaskNum(1);
             downloadFileRequest.setPartSize(1024 * 1024 * 1024);
//            downloadFileRequest.setEnableCheckpoint(true);
             long startTime = System.currentTimeMillis();
             DownloadFileResult downloadFileResult = obsClient.downloadFile(downloadFileRequest);
             long endtime = System.currentTimeMillis();
             System.out.println(String.valueOf((endtime - startTime) / 1000.0D) + "s");
             System.out.println(String.valueOf((downloadFileResult.getObjectMetadata().getContentLength() * 1000.0 / (endtime - startTime)) / (1024 * 1024)) + "MB/s");;
         }
         catch (ObsException e)
         {
             System.out.println("Response Code: " + e.getResponseCode());
             System.out.println("Error Message: " + e.getErrorMessage());
             System.out.println("Error Code:       " + e.getErrorCode());
             System.out.println("Request ID:      " + e.getErrorRequestId());
             System.out.println("Host ID:           " + e.getErrorHostId());
         }
         finally
         {
             if (obsClient != null)
             {
                 try
                 {
                     /*
                      * Close obs client
                      */
                     obsClient.close();
                 }
                 catch (IOException e)
                 {
                 }
             }
         }

     }

 }
 

3      效果展示

下载的文件保存在E://downf1.txt

image.png

对于大文件还可以打开断点续传,只需要打开Checkpoint

downloadFileRequest.setEnableCheckpoint(true)

4      附录

OBS JAVA SDK使用,官网参考链接:https://support.huaweicloud.com/sdkreference-obs/obs_02_0001.html

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。