使用百度BCS-Java-SDK文件夹上传及下载
来源:互联网 发布:max485 3.3v单片机 编辑:程序博客网 时间:2024/06/01 10:50
前话: 最近比较闲,用过百度/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<ObjectMetadata> 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<ObjectListing> 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<ObjectListing> 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]; }}
- 使用百度BCS-Java-SDK文件夹上传及下载
- 使用php对百度云BCS上传本地文件的实现及原理分析
- Java使用百度云存储BCS-让你的数据下载飞起来
- 百度云存储服务BCS教程使用java接入
- 使用AWS SDK for Java 上传和下载文件
- 百度富文本编辑器ueditor上传文件到bcs中
- sharepoint 2013 BCS 配置及使用
- C#向共享文件夹上传及下载文件
- java中的文件上传和下载及上传组件的使用
- 百度定位下载 LBS SDK
- 使用LoadRunner上传及下载文件
- 使用LoadRunner上传及下载文件
- vsftp命令使用:文件上传及下载
- curl下载及上传命令使用整理
- java实现FTP的上传及下载
- java批量下载百度贴吧楼主上传的图片
- Android使用百度定位SDK方法及错误处理
- 【代码】Android 使用百度定位SDK 方法及处理错误
- Javascript format日期function
- linux下”流氓“清理oracle安装脚本
- GridView自定義分頁---派生類(1)
- 连接sqlserver2000用的字符串连接
- 安装测试web.py-0.37
- 使用百度BCS-Java-SDK文件夹上传及下载
- GridView自定義分頁---派生類(2)
- android 使用多个Intent 进行activity跳转 而没有finish的情况,如何直接退出系统
- linux多线程编程
- 在win7下删除Windows服务的方法
- 学英语的软件!
- java的hashcode(结合hashset讲解)
- 移动办公解决方案
- OpenWrt学习笔记_OpenWrt编译与烧写