java bcs删除文件,使用百度BCS-Java-SDK文件夹上传及下载

前话: 最近比较闲,用过百度/google/360/金山的云盘,想自己开发程序使用云盘API来上传和下载文件,之前了解过百度云存储API,一直没有试验过,所以今天试了一下,空间好像是1TB,确实蛮大的,样例中循环上传文件进行测试,才写不到1GB。360还像也有了云API;百度除了BCS还有PCS,应该取代BCS,明天可以试一下。不过BCS SDK很不专业,比起JDK规范性上差多了。

package com.test;

import java.io.File;

import com.baidu.inf.iis.bcs.BaiduBCS;

import com.baidu.inf.iis.bcs.auth.BCSCredentials;

import com.baidu.inf.iis.bcs.model.ObjectListing;

import com.baidu.inf.iis.bcs.model.ObjectMetadata;

import com.baidu.inf.iis.bcs.model.ObjectSummary;

import com.baidu.inf.iis.bcs.request.GetObjectRequest;

import com.baidu.inf.iis.bcs.request.ListObjectRequest;

import com.baidu.inf.iis.bcs.request.PutObjectRequest;

import com.baidu.inf.iis.bcs.response.BaiduBCSResponse;

public class Main

{

/**

* 百度云存储APP服务器,固定字段

*/

static String host = "bcs.duapp.com";

/**

* 开发者自己建立的存储池

*/

static String bucket = "kitphoto";

/**

* 将该文件夹下文件上传到百度云存储上

*/

static String inputFileDir = "C:\\photo\\input\\";

/**

* 从百度云存储池下载文件到该目录下

*/

static String outputFileDir = "C:\\photo\\output\\";

/**

* @param args

*/

public static void main(String[] args){

// access 和secret key申请参考http://developer.baidu.com/wiki/index.php?title=docs/cplat/stor/guide

BCSCredentials credentials = new BCSCredentials("your access key",

"your secret key");

BaiduBCS baiduBCS = new BaiduBCS(credentials, host);

baiduBCS.setDefaultEncoding("UTF-8"); // Default UTF-8

clearBucket(baiduBCS, bucket);

putFilesByDir(baiduBCS, inputFileDir, "/input/");

//getFilesByDir(baiduBCS, outputFileDir, "/input/");

}

/* 测试使用 */

static int count = 0;

/**

* 将单个文件上传到BCS上

* @param baiduBCS

* @param file :待上传的文件对象

* @param dir : 文件在BCS上的路径

*/

private static void putObjectByFile(BaiduBCS baiduBCS, File file, String dir)

{

count++;

PutObjectRequest request = new PutObjectRequest(bucket, dir + "t" + count + file.getName(), file);

ObjectMetadata metadata = new ObjectMetadata();

// metadata.setContentType("text/html");

request.setMetadata(metadata);

BaiduBCSResponse response = baiduBCS.putObject(request);

ObjectMetadata objectMetadata = response.getResult();

System.out.println("Upload file :" + file.getName());

}

/**

* 清空BCS上bucket,遍历bucket下的内容,逐个删除

* @param baiduBCS

* @param bucket

*/

private static void clearBucket(BaiduBCS baiduBCS, String bucket)

{

/* 有内容时不允许删除bucket */

// baiduBCS.deleteBucket(bucket);

// CreateBucketRequest request = new CreateBucketRequest(bucket);

// baiduBCS.createBucket(request);

/* 获取存储池内容逐项删除 */

ListObjectRequest listObjectRequest = new ListObjectRequest(bucket);

BaiduBCSResponse response = baiduBCS.listObject(listObjectRequest);

for (ObjectSummary os : response.getResult().getObjectSummaries())

{

System.out.println("Delete: bucket = " + bucket + "file = " + os.toString());

baiduBCS.deleteObject(bucket, os.getName());

}

}

/**

* 获取BCS上制定目录下的所有文件,下载到本地

* @param baiduBCS

* @param localDir :指定将文件保存到本地的路径

* @param serverDir: BCS服务器上文件路径

*/

private static void getFilesByDir(BaiduBCS baiduBCS, String localDir, String serverDir)

{

ListObjectRequest listObjectRequest = new ListObjectRequest(bucket);

listObjectRequest.setStart(0);

listObjectRequest.setLimit(20);

listObjectRequest.setPrefix(serverDir);

// ------------------by dir

{

// prefix must start with '/' and end with '/'

// listObjectRequest.setPrefix("/1/");

// listObjectRequest.setListModel(2);

}

// ------------------only object

{

// prefix must start with '/'

// listObjectRequest.setPrefix("/1/");

}

BaiduBCSResponse response = baiduBCS.listObject(listObjectRequest);

//log.info("we get [" + response.getResult().getObjectSummaries().size() + "] object record.");

for (ObjectSummary os : response.getResult().getObjectSummaries()) {

System.out.println("Download : " + os.toString());

GetObjectRequest getObjectRequest = new GetObjectRequest(bucket, os.getName());

File file = new File(localDir + getFileName(os.getName()));

baiduBCS.getObject(getObjectRequest, file);

}

}

/**

* 将本地路径下的文件上传到BCS服务器上,过滤本地隐藏文件

* @param baiduBCS

* @param localDir

* @param serverDir

*/

private static void putFilesByDir(BaiduBCS baiduBCS, String localDir, String serverDir)

{

File file = new File(localDir);

int count = 1;

if(!file.isDirectory())

{

putObjectByFile(baiduBCS, file, serverDir);

}

else

{

while(count < 100000) /* 这层循环仅用于测试BCS存储池最大可存储多少数据 */

{

String[] list = file.list();

for(int i = 0; i < list.length; i++)

{

File subFile = new File(localDir + "\\" + list[i]);

/* 过滤隐藏文件 */

if(subFile.isHidden())

{

continue;

}

putObjectByFile(baiduBCS, subFile, serverDir);

}

count++;

}

}

}

private static String getFileName(String fullName)

{

String[] strs = fullName.split("/");

return strs[strs.length - 1];

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值