|
@@ -0,0 +1,115 @@
|
|
|
+package com.winhc.task;
|
|
|
+
|
|
|
+import com.aliyun.oss.OSS;
|
|
|
+import com.aliyun.oss.OSSClientBuilder;
|
|
|
+import com.aliyun.oss.model.*;
|
|
|
+
|
|
|
+import java.io.BufferedReader;
|
|
|
+import java.io.InputStreamReader;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author π
|
|
|
+ * @Description:
|
|
|
+ * @date 2022/11/16 14:38
|
|
|
+ */
|
|
|
+public class TestGetOssFile {
|
|
|
+
|
|
|
+ //安硕key
|
|
|
+ public static String accessKeyId = "LTAI5tDrbWcjKkzTnJXCrwkC";
|
|
|
+ public static String accessKeySecret = "AWDvBsQc16AYMszNVRga5ANbzuLowy";
|
|
|
+
|
|
|
+ //内部key
|
|
|
+// public static String accessKeyId = "LTAI6HKo33DbtiBI";
|
|
|
+// public static String accessKeySecret = "8FmSBhHyaz4jtyJhiimK0NGF5rBPMl";
|
|
|
+
|
|
|
+ public static String endpoint = "https://oss-cn-shanghai.aliyuncs.com";
|
|
|
+ public static String bucketName = "data-exchange-as";
|
|
|
+
|
|
|
+ public static void main(String[] args) {
|
|
|
+
|
|
|
+ OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
|
|
|
+ try {
|
|
|
+ String objectName = "anshuo/tmp/area_code.csv";
|
|
|
+ // 封装GetObject请求。
|
|
|
+ GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, objectName);
|
|
|
+ // ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。
|
|
|
+ OSSObject ossObject = ossClient.getObject(getObjectRequest);
|
|
|
+
|
|
|
+ BufferedReader reader = new BufferedReader(new InputStreamReader(ossObject.getObjectContent()));
|
|
|
+ while (true) {
|
|
|
+ String line = reader.readLine();
|
|
|
+ System.out.println("\n" + line);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ //Stream.of("", "/", "anshuo/", "anshuo")
|
|
|
+ //Stream.of("bigdata/auction_tracking/42334999458/", "anshuo/auction_tracking/all/")
|
|
|
+ Stream.of("anshuo/dim_change/20221115/")
|
|
|
+ .forEach(prefix -> {
|
|
|
+ listBucket2(prefix, ossClient);
|
|
|
+ });
|
|
|
+ } catch (Exception ce) {
|
|
|
+ System.out.println("Error Message:" + ce.getMessage());
|
|
|
+ } finally {
|
|
|
+ // 关闭OSSClient。
|
|
|
+ if (ossClient != null) {
|
|
|
+ ossClient.shutdown();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void listBucket(String PREFIX, OSS ossClient) {
|
|
|
+ try {
|
|
|
+ // 构造ListObjectsRequest请求
|
|
|
+ ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);
|
|
|
+ //Delimiter 设置为 “/” 时,罗列该文件夹下的文件
|
|
|
+ listObjectsRequest.setDelimiter("/");
|
|
|
+ //Prefix 设为某个文件夹名,罗列以此 Prefix 开头的文件
|
|
|
+ listObjectsRequest.setPrefix(PREFIX);
|
|
|
+ ObjectListing listing = ossClient.listObjects(listObjectsRequest);
|
|
|
+ List<String> files = listing.getObjectSummaries()
|
|
|
+ .stream()
|
|
|
+ .map(OSSObjectSummary::getKey).collect(Collectors.toList());
|
|
|
+ System.out.println("file : <------> : pre : " + PREFIX + " " + files);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void listBucket2(String prefix, OSS ossClient) {
|
|
|
+ try {
|
|
|
+ String nextContinuationToken = null;
|
|
|
+ ListObjectsV2Result result;
|
|
|
+
|
|
|
+ // 分页列举指定前缀的文件。
|
|
|
+ do {
|
|
|
+ ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(bucketName).withMaxKeys(200);
|
|
|
+ listObjectsV2Request.setPrefix(prefix);
|
|
|
+ listObjectsV2Request.setContinuationToken(nextContinuationToken);
|
|
|
+ result = ossClient.listObjectsV2(listObjectsV2Request);
|
|
|
+
|
|
|
+ List<OSSObjectSummary> sums = result.getObjectSummaries();
|
|
|
+ for (OSSObjectSummary s : sums) {
|
|
|
+ System.out.println("\t" + s.getKey());
|
|
|
+ System.out.println("file : <------> : pre : " + prefix + " " + s.getKey());
|
|
|
+ }
|
|
|
+
|
|
|
+ nextContinuationToken = result.getNextContinuationToken();
|
|
|
+
|
|
|
+ } while (result.isTruncated());
|
|
|
+ } catch (Exception ce) {
|
|
|
+ System.out.println("Caught an ClientException, which means the client encountered "
|
|
|
+ + "a serious internal problem while trying to communicate with OSS, "
|
|
|
+ + "such as not being able to access the network.");
|
|
|
+ System.out.println("Error Message:" + ce.getMessage());
|
|
|
+ } finally {
|
|
|
+ if (ossClient != null) {
|
|
|
+ ossClient.shutdown();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+}
|