定期删除阿里云过期的object文件

来源:互联网 发布:七星彩计划软件 编辑:程序博客网 时间:2024/05/17 21:49

AliyunUtils

import java.util.ArrayList;import java.util.List;import com.aliyun.oss.OSSClient;import com.aliyun.oss.model.ListObjectsRequest;import com.aliyun.oss.model.OSSObjectSummary;import com.aliyun.oss.model.ObjectListing;public class AliyunUtils {private static String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";private static String accessKeyId = "<这里是公司的accessKeyId>";private static String accessKeySecret = "<这里是公司的accessKeySecret>";private static String bucketName = "<这里是公司的bucketName>";private static OSSClient ossClient;/**删除图片 * @param key  */public static void deletePicture(String key){ossClient  = new OSSClient(endpoint, accessKeyId, accessKeySecret);ossClient.deleteObject(bucketName, key);ossClient.shutdown();}/**列出目录下所有文件(object) * @param prefix 指定文件夹 * @return */public static List<String> getAllKey(String prefix) {List<String> commonPrefixes = getCommonPrefixes(prefix);ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);// 构造ListObjectsRequest请求ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);List<String> list = new ArrayList<String>();for (String string : commonPrefixes) {// 递归列出fun目录下的所有文件listObjectsRequest.setPrefix(string);ObjectListing listing = ossClient.listObjects(listObjectsRequest);for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {    list.add(objectSummary.getKey());}}return list;}/**列出目录下所有子目录 * @param prefix 指定文件夹 * @return */public static List<String> getCommonPrefixes(String prefix) {ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);// 构造ListObjectsRequest请求ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);// "/" 为文件夹的分隔符listObjectsRequest.setDelimiter("/");// 递归列出fun目录下的所有文件listObjectsRequest.setPrefix(prefix + "/");ObjectListing listing = ossClient.listObjects(listObjectsRequest);return listing.getCommonPrefixes();}}

DelObjectImpl

import java.util.Calendar;import java.util.List;import org.springframework.scheduling.annotation.Scheduled;import org.springframework.stereotype.Component;/* * 删除阿里云过期的object * */@Componentpublic class DelObjectImpl {@Scheduled(cron = " 0 0 5 ? * MON ") // 每周一早5点执行一次  public void myTest() {//保存的key格式为: key = "circle/uid/" + Calendar.getInstance().getTimeInMillis();List<String> list = AliyunUtils.getAllKey("circle");for (String key : list) {String[] split = key.split("/");if (split[0].equals("circle")) {//删除3个月之前的文件if (Calendar.getInstance().getTimeInMillis() > (Long.parseLong(split[2]) + 3600l * 1000 * 24 * 90)) {AliyunUtils.deletePicture(key);System.err.println("删除成功: "+ key);}}}}}

配置定时器参考:
http://blog.csdn.net/llllvvv/article/details/75634663