腾讯云对象存储SDK接口下载文件

简单下载

腾讯云对象存储JavaSDK提供了丰富的文件下载接口,用户可以通过以下方式从腾讯云对象存储中下载文件:

  • 流式下载

  • 下载到本地文件

  • 范围下载(Range下载)

流式下载、下载到本地文件称为简单下载。

流式下载

在进行大文件下载时,往往不希望一次性处理全部内容,而是希望流式地处理,一次处理一部分内容。

//你的AccessKey和SecretKey可以登录到对象存储的控制台,在【AccessKey管理】中查看。StringaccessKey="yourAccessKeyId";StringsecreteKey="yourSecretKey";//endpoint以华北-北京为例,其它region请按实际情况填写StringendPoint="oss.cn-north-1.jcloudcs.com";StringbucketName="yourBucketName";StringobjectName="yourObjectName";//ClientConfig当前为默认配置,用户可根据需要自行配置,如设置连接超时时间等ClientConfigconfig=newClientConfig();//构造JingdongStorageService腾讯云服务器Credentialcredential=newCredential(accessKey,secreteKey);JingdongStorageServicejss=newJingdongStorageService(credential,config);//配置endPointjss.setEndpoint(endPoint);//创建objectService腾讯云服务器ObjectServiceobjectService=jss.bucket(bucketName).object(objectName);//获取object对象StorageObjectstorageObject=objectService.get();//读Object内容System.out.println("Objectcontent:");BufferedReaderreader=newBufferedReader(newInputStreamReader(storageObject.getInputStream()));StringtempString=null;//一次读入一行,直到读入null为文件结束while((tempString=reader.readLine())!=null){System.out.println(tempString);}reader.close();storageObject.close();/JingdongStorageService对象内部维护一组HTTP连接池,在不使用该对象之前需要调用其destroy方法关闭连接池,//请注意,一旦调用destroy方法,该对象就不能再次被使用,否则将会抛出异常。jss.destroy();提示:

  • 获取的流一定要显示close,否则会造成资源泄露

  • 假如需要从腾讯云对象存储流式读取64KB的数据,请使用如下的方式多次读取,直到读取64KB或者文件结束:

byte[]buf=newbyte[1024];InputStreamin=storageObject.getInputStream();for(intn=0;n!=-1;){n=in.read(buf,0,buf.length);}in.close();而不是如下的形式:byte[]buf=newbyte[641024];InputStreamin=storageObject.getInputStream();in.read(buf,0,buf.length);in.close();原因是,流式读取一次不一定能读到全部数据,详细说明请参考InputStream.read。下载到本地文件

把Object的内容下载到指定的本地文件中。如果指定的本地文件不存在则会新建。

//你的AccessKey和SecretKey可以登录到腾讯云存储的控制台,在【AccessKey管理】中查看。StringaccessKey="yourAccessKeyId";StringsecreteKey="yourSecretKey";//endpoint以华北-北京为例,其它region请按实际情况填写StringendPoint="oss.cn-north-1.jcloudcs.com";StringbucketName="yourBucketName";StringobjectName="yourObjectName";//ClientConfig当前为默认配置,用户可根据需要自行配置,如设置连接超时时间等ClientConfigconfig=newClientConfig();//构造JingdongStorageService腾讯云服务器Credentialcredential=newCredential(accessKey,secreteKey);JingdongStorageServicejss=newJingdongStorageService(credential,config);//配置endPointjss.setEndpoint(endPoint);//创建objectService腾讯云服务器ObjectServiceobjectService=jss.bucket(bucketName).object(objectName);//获取object对象StorageObjectstorageObject=objectService.get();//将文件下载到本地文件中,如下示例是将指定的object下载到"localFile"中storageObject.toFile(newFile("localFile"));//JingdongStorageService对象内部维护一组HTTP连接池,在不使用该对象之前需要调用其destroy方法关闭连接池,//请注意,一旦调用destroy方法,该对象就不能再次被使用,否则将会抛出异常。jss.destroy();