Parcourir la source

oss list test

xufei il y a 2 ans
Parent
commit
4c2e04b282

+ 9 - 2
src/main/java/com/winhc/task/util/OssUtils.java

@@ -18,8 +18,15 @@ import java.io.InputStreamReader;
 public class OssUtils {
 
     public static OSS ossClient;
-    public static String accessKeyId = "LTAI5tDrbWcjKkzTnJXCrwkC";
-    public static String accessKeySecret = "AWDvBsQc16AYMszNVRga5ANbzuLowy";
+    //安硕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";
 

+ 115 - 0
src/test/java/com/winhc/task/TestGetOssFile.java

@@ -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();
+            }
+        }
+
+    }
+}