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

举报
lanxinliuli 发表于 2019/07/18 17:34:09 2019/07/18
【摘要】 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

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

全部回复

上滑加载中

设置昵称

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

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

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