zoukankan      html  css  js  c++  java
  • 【OSS】工具类

    package com.aliyun.oss.demo;
    
    import com.aliyun.oss.ClientException;
    import com.aliyun.oss.OSSClient;
    import com.aliyun.oss.OSSException;
    import com.aliyun.oss.model.*;
    import org.apache.log4j.Logger;
    import org.apache.log4j.PropertyConfigurator;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @BelongsProject: maven-demo
     * @BelongsPackage: com.aliyun.oss.demo
     * @Author: Guoyh
     * @CreateTime: 2018-10-11 15:36
     * @Description: 拷贝文件
     */
    public class CopyObjects {
        static Logger logger = Logger.getLogger(HelloOSS.class);
    
        // endpoint是访问OSS的域名。如果您已经在OSS的控制台上 创建了Bucket,请在控制台上查看域名。
        // 如果您还没有创建Bucket,endpoint选择请参看文档中心的“开发人员指南 > 基本概念 > 访问域名”,
        // 链接地址是:https://help.aliyun.com/document_detail/oss/user_guide/oss_concept/endpoint.html?spm=5176.docoss/user_guide/endpoint_region
        // endpoint的格式形如“http://oss-cn-hangzhou.aliyuncs.com/”,注意http://后不带bucket名称,
        // 比如“http://bucket-name.oss-cn-hangzhou.aliyuncs.com”,是错误的endpoint,请去掉其中的“bucket-name”。
        private static String endpoint = "http://oss-cn-huhehaote.aliyuncs.com";
    
        // accessKeyId和accessKeySecret是OSS的访问密钥,您可以在控制台上创建和查看,
        // 创建和查看访问密钥的链接地址是:https://ak-console.aliyun.com/#/。
        // 注意:accessKeyId和accessKeySecret前后都没有空格,从控制台复制时请检查并去除多余的空格。
        private static String accessKeyId = "";
        private static String accessKeySecret = "";
    
        // Bucket用来管理所存储Object的存储空间,详细描述请参看“开发人员指南 > 基本概念 > OSS基本概念介绍”。
        // Bucket命名规范如下:只能包括小写字母,数字和短横线(-),必须以小写字母或者数字开头,长度必须在3-63字节之间。
        private static String bucketName = "";
    
    
        public static void main(String[] args) {
    
            // 日志配置,OSS Java SDK使用log4j记录错误信息。示例程序会在工程目录下生成“oss-demo.log”日志文件,默认日志级别是INFO。
            // 日志的配置文件是“conf/log4j.properties”,如果您不需要日志,可以没有日志配置文件和下面的日志配置。
            PropertyConfigurator.configure("conf/log4j.properties");
    
            logger.info("Started");
    
            // 生成OSSClient,您可以指定一些参数,详见“SDK手册 > Java-SDK > 初始化”,
            // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/init.html?spm=5176.docoss/sdk/java-sdk/get-start
            OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    
            try {
    
                /*  校验存储空间  */
                // 判断Bucket是否存在。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
                // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
                if (ossClient.doesBucketExist(bucketName)) {
                    System.out.println("您已经创建Bucket:" + bucketName + "。");
                } else {
                    System.out.println("您的Bucket不存在,创建Bucket:" + bucketName + "。");
                    // 创建Bucket。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
                    // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
                    ossClient.createBucket(bucketName);
                }
    
                // 查看Bucket信息。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
                // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
                BucketInfo info = ossClient.getBucketInfo(bucketName);
                System.out.println("Bucket " + bucketName + "的信息如下:");
                System.out.println("	数据中心:" + info.getBucket().getLocation());
                System.out.println("	创建时间:" + info.getBucket().getCreationDate());
                System.out.println("	用户标志:" + info.getBucket().getOwner());
    
                /*拷贝文件*/
                String sourceBucketName = bucketName;
                String sourceObjectName = "oss-accesslog/********2018-10-10-15-00-00-0001";
                String destinationBucketName = bucketName;
                String destinationObjectName = "*****/********2018-10-10-15-00-00-0001-copy";
                ObjectMetadata objectMetadata = ossClient.getObjectMetadata(sourceBucketName, sourceObjectName);
                // 获取被拷贝文件的大小。
                long contentLength = objectMetadata.getContentLength();
    
                // 设置分片大小为10MB。
                long partSize = 1024 * 1024 * 10;
    
                // 计算分片总数。
                int partCount = (int) (contentLength / partSize);
                if (contentLength % partSize != 0) {
                    partCount++;
                }
                System.out.println("total part count:" + partCount);
    
                // 初始化拷贝任务。可以通过InitiateMultipartUploadRequest指定目标文件元信息。
                InitiateMultipartUploadRequest initiateMultipartUploadRequest = new InitiateMultipartUploadRequest(destinationBucketName, destinationObjectName);
                InitiateMultipartUploadResult initiateMultipartUploadResult = ossClient.initiateMultipartUpload(initiateMultipartUploadRequest);
                String uploadId = initiateMultipartUploadResult.getUploadId();
    
                // 分片拷贝。
                List<PartETag> partETags = new ArrayList<PartETag>();
                for (int i = 0; i < partCount; i++) {
                    // 计算每个分片的大小。
                    long skipBytes = partSize * i;
                    long size = partSize < contentLength - skipBytes ? partSize : contentLength - skipBytes;
    
                    // 创建UploadPartCopyRequest。可以通过UploadPartCopyRequest指定限定条件。
                    UploadPartCopyRequest uploadPartCopyRequest =
                            new UploadPartCopyRequest(sourceBucketName, sourceObjectName, destinationBucketName, destinationObjectName);
                    uploadPartCopyRequest.setUploadId(uploadId);
                    uploadPartCopyRequest.setPartSize(size);
                    uploadPartCopyRequest.setBeginIndex(skipBytes);
                    uploadPartCopyRequest.setPartNumber(i + 1);
                    UploadPartCopyResult uploadPartCopyResult = ossClient.uploadPartCopy(uploadPartCopyRequest);
    
                    // 将返回的分片ETag保存到partETags中。
                    partETags.add(uploadPartCopyResult.getPartETag());
                }
    
                // 提交分片拷贝任务。
                CompleteMultipartUploadRequest completeMultipartUploadRequest = new CompleteMultipartUploadRequest(
                        destinationBucketName, destinationObjectName, uploadId, partETags);
                ossClient.completeMultipartUpload(completeMultipartUploadRequest);
                System.out.println("	"+destinationObjectName+"	"+"拷贝完成");
    
    
            } catch (OSSException oe) {
                oe.printStackTrace();
            } catch (ClientException ce) {
                ce.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                ossClient.shutdown();
            }
    
            logger.info("Completed");
        }
    
    }
    CopyObjects.java
    package com.aliyun.oss.demo;
    
    import com.aliyun.oss.ClientException;
    import com.aliyun.oss.OSSClient;
    import com.aliyun.oss.OSSException;
    import com.aliyun.oss.model.BucketInfo;
    import com.aliyun.oss.model.ListObjectsRequest;
    import com.aliyun.oss.model.OSSObjectSummary;
    import com.aliyun.oss.model.ObjectListing;
    import org.apache.log4j.Logger;
    import org.apache.log4j.PropertyConfigurator;
    
    import java.util.List;
    
    /**
     * @BelongsProject: maven-demo
     * @BelongsPackage: com.aliyun.oss.demo
     * @Author: Guoyh
     * @CreateTime: 2018-10-12 13:39
     * @Description: 删除oss对象
     */
    public class DeleteObjects {
        static Logger logger = Logger.getLogger(HelloOSS.class);
    
        // endpoint是访问OSS的域名。如果您已经在OSS的控制台上 创建了Bucket,请在控制台上查看域名。
        // endpoint的格式形如“http://oss-cn-hangzhou.aliyuncs.com/”,注意http://后不带bucket名称,
        // 比如“http://bucket-name.oss-cn-hangzhou.aliyuncs.com”,是错误的endpoint,请去掉其中的“bucket-name”。
        private static String endpoint = "http://oss-cn-huhehaote.aliyuncs.com";
    
        // accessKeyId和accessKeySecret是OSS的访问密钥,您可以在控制台上创建和查看
        // 注意:accessKeyId和accessKeySecret前后都没有空格,从控制台复制时请检查并去除多余的空格。
        private static String accessKeyId = "";
        private static String accessKeySecret = "";
    
        // Bucket用来管理所存储Object的存储空间,
        // Bucket命名规范如下:只能包括小写字母,数字和短横线(-),必须以小写字母或者数字开头,长度必须在3-63字节之间。
        private static String bucketName = "";
    
        public static void main(String[] args) {
    
            // 日志配置,OSS Java SDK使用log4j记录错误信息。示例程序会在工程目录下生成“oss-demo.log”日志文件,默认日志级别是INFO。
            // 日志的配置文件是“conf/log4j.properties”,如果您不需要日志,可以没有日志配置文件和下面的日志配置。
            PropertyConfigurator.configure("conf/log4j.properties");
    
            logger.info("Started");
    
            // 生成OSSClient,您可以指定一些参数,
            OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    
            try {
                /*  校验存储空间  */
                // 判断Bucket是否存在。
                if (ossClient.doesBucketExist(bucketName)) {
                    System.out.println("您已经创建Bucket:" + bucketName + "。");
                } else {
                    System.out.println("您的Bucket不存在,创建Bucket:" + bucketName + "。");
                    // 创建Bucket。
                    ossClient.createBucket(bucketName);
                }
    
                // 查看Bucket信息。
                BucketInfo info = ossClient.getBucketInfo(bucketName);
                System.out.println("Bucket " + bucketName + "的信息如下:");
                System.out.println("	数据中心:" + info.getBucket().getLocation());
                System.out.println("	创建时间:" + info.getBucket().getCreationDate());
                System.out.println("	用户标志:" + info.getBucket().getOwner());
    
    
                /*遍历存储空间*/
                // 查看Bucket中的Object。
                // 指定前缀。列举文件
                final String keyPrefix = "************";
                // 列举包含指定前缀的文件。默认列举100个文件。
                ObjectListing objectListingWithPrefix = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix));
                List<OSSObjectSummary> sums = objectListingWithPrefix.getObjectSummaries();
                System.out.println("您有以下Object:");
                for (OSSObjectSummary s : sums) {
                    System.out.println("	" + s.getKey());
                }
                System.out.println("	" + "--------------------------------------------------------------------------");
    
                /*删除空间文件*/
                // 删除Object。详细请参看“SDK手册 > Java-SDK > 管理文件”。
                // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket
                ossClient.deleteObject(bucketName, "************/89gN8339293844m6915l693800g7Tk40.gif");
                System.out.println("删除Object:" + "************/89gN8339293844m6915l693800g7Tk40.gif" + "成功。");
    
                System.out.println("	" + "--------------------------------------------------------------------------");
                ObjectListing objectListingWithPrefixP = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix));
                List<OSSObjectSummary> sum = objectListingWithPrefixP.getObjectSummaries();
                System.out.println("您有以下Object:");
                for (OSSObjectSummary s : sum) {
                    System.out.println("	" + s.getKey());
                }
    
    
            } catch (OSSException oe) {
                oe.printStackTrace();
            } catch (ClientException ce) {
                ce.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                ossClient.shutdown();
            }
    
            logger.info("Completed");
        }
    
    }
    DeleteObjects.java
    package com.aliyun.oss.demo;
    
    import com.aliyun.oss.ClientException;
    import com.aliyun.oss.OSSClient;
    import com.aliyun.oss.OSSException;
    import com.aliyun.oss.model.*;
    import org.apache.log4j.Logger;
    import org.apache.log4j.PropertyConfigurator;
    
    import java.util.List;
    
    /**
     * @BelongsProject: maven-demo
     * @BelongsPackage: com.aliyun.oss.demo
     * @Author: Guoyh
     * @CreateTime: 2018-10-11 14:51
     * @Description: 下载OSS文件
     */
    public class DownloadObjects {
        static Logger logger = Logger.getLogger(HelloOSS.class);
    
        // endpoint是访问OSS的域名。如果您已经在OSS的控制台上 创建了Bucket,请在控制台上查看域名。
        // 如果您还没有创建Bucket,endpoint选择请参看文档中心的“开发人员指南 > 基本概念 > 访问域名”,
        // 链接地址是:https://help.aliyun.com/document_detail/oss/user_guide/oss_concept/endpoint.html?spm=5176.docoss/user_guide/endpoint_region
        // endpoint的格式形如“http://oss-cn-hangzhou.aliyuncs.com/”,注意http://后不带bucket名称,
        // 比如“http://bucket-name.oss-cn-hangzhou.aliyuncs.com”,是错误的endpoint,请去掉其中的“bucket-name”。
        private static String endpoint = "http://oss-cn-huhehaote.aliyuncs.com";
    
        // accessKeyId和accessKeySecret是OSS的访问密钥,您可以在控制台上创建和查看,
        // 创建和查看访问密钥的链接地址是:https://ak-console.aliyun.com/#/。
        // 注意:accessKeyId和accessKeySecret前后都没有空格,从控制台复制时请检查并去除多余的空格。
        private static String accessKeyId = "";
        private static String accessKeySecret = "";
    
        // Bucket用来管理所存储Object的存储空间,详细描述请参看“开发人员指南 > 基本概念 > OSS基本概念介绍”。
        // Bucket命名规范如下:只能包括小写字母,数字和短横线(-),必须以小写字母或者数字开头,长度必须在3-63字节之间。
        private static String bucketName = "";
    
    
        public static void main(String[] args) {
    
            // 日志配置,OSS Java SDK使用log4j记录错误信息。示例程序会在工程目录下生成“oss-demo.log”日志文件,默认日志级别是INFO。
            // 日志的配置文件是“conf/log4j.properties”,如果您不需要日志,可以没有日志配置文件和下面的日志配置。
            PropertyConfigurator.configure("conf/log4j.properties");
    
            logger.info("Started");
    
            // 生成OSSClient,您可以指定一些参数,详见“SDK手册 > Java-SDK > 初始化”,
            // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/init.html?spm=5176.docoss/sdk/java-sdk/get-start
            OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    
            try {
    
                /*  校验存储空间  */
                // 判断Bucket是否存在。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
                // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
                if (ossClient.doesBucketExist(bucketName)) {
                    System.out.println("您已经创建Bucket:" + bucketName + "。");
                } else {
                    System.out.println("您的Bucket不存在,创建Bucket:" + bucketName + "。");
                    // 创建Bucket。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
                    // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
                    ossClient.createBucket(bucketName);
                }
    
                // 查看Bucket信息。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
                // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
                BucketInfo info = ossClient.getBucketInfo(bucketName);
                System.out.println("Bucket " + bucketName + "的信息如下:");
                System.out.println("	数据中心:" + info.getBucket().getLocation());
                System.out.println("	创建时间:" + info.getBucket().getCreationDate());
                System.out.println("	用户标志:" + info.getBucket().getOwner());
    
    
                /*遍历存储空间文件 并下载*/
                // 查看Bucket中的Object。详细请参看“SDK手册 > Java-SDK > 管理文件”。
                // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket
                // 指定前缀。
                final String keyPrefix = "oss-accesslog";
                // 列举包含指定前缀的文件。默认列举100个文件。
                ObjectListing objectListing = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix));
                List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
                System.out.println("您有以下Object:");
                //文件名+访问路径
                for (OSSObjectSummary s : sums) {
                    /*下载文件到本地*/
                    // 下载OSS文件到本地文件。如果指定的本地文件存在会覆盖,不存在则新建。
                    String str = s.getKey();
    //                ossClient.getObject(new GetObjectRequest(bucketName, str), new File("G://oss//oss-accesslog//"+str.substring(str.lastIndexOf("/"))));
                    System.out.println("	" + str+"	" +"下载完成!");
                }
    
                /*下载文件*/
                String objectKey = "oss-accesslog/**********2018-10-10-15-00-00-0001";
    //            ossClient.getObject(new GetObjectRequest(bucketName, objectKey), new File("G://oss//oss-accesslog//"+objectKey.substring(objectKey.lastIndexOf("/"))));
    //            System.out.println("	" + objectKey.substring(objectKey.lastIndexOf("/"))+"	" +"下载完成!");
    
            } catch (OSSException oe) {
                oe.printStackTrace();
            } catch (ClientException ce) {
                ce.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                ossClient.shutdown();
            }
    
            logger.info("Completed");
        }
    
    }
    DownloadObjects.java
    package com.aliyun.oss.demo;
    
    import com.aliyun.oss.ClientException;
    import com.aliyun.oss.OSSClient;
    import com.aliyun.oss.OSSException;
    import com.aliyun.oss.model.*;
    import org.apache.log4j.Logger;
    import org.apache.log4j.PropertyConfigurator;
    
    import java.util.List;
    
    /**
     * @BelongsProject: maven-demo
     * @BelongsPackage: com.aliyun.oss.demo
     * @Author: Guoyh
     * @CreateTime: 2018-10-11 14:28
     * @Description: 获取文件访问的URL
     */
    public class GetObjectsRequestURL {
        static Logger logger = Logger.getLogger(HelloOSS.class);
    
        // endpoint是访问OSS的域名。如果您已经在OSS的控制台上 创建了Bucket,请在控制台上查看域名。
        // 如果您还没有创建Bucket,endpoint选择请参看文档中心的“开发人员指南 > 基本概念 > 访问域名”,
        // 链接地址是:https://help.aliyun.com/document_detail/oss/user_guide/oss_concept/endpoint.html?spm=5176.docoss/user_guide/endpoint_region
        // endpoint的格式形如“http://oss-cn-hangzhou.aliyuncs.com/”,注意http://后不带bucket名称,
        // 比如“http://bucket-name.oss-cn-hangzhou.aliyuncs.com”,是错误的endpoint,请去掉其中的“bucket-name”。
        private static String endpoint = "http://oss-cn-huhehaote.aliyuncs.com";
    
        // accessKeyId和accessKeySecret是OSS的访问密钥,您可以在控制台上创建和查看,
        // 创建和查看访问密钥的链接地址是:https://ak-console.aliyun.com/#/。
        // 注意:accessKeyId和accessKeySecret前后都没有空格,从控制台复制时请检查并去除多余的空格。
        private static String accessKeyId = "";
        private static String accessKeySecret = "";
    
        // Bucket用来管理所存储Object的存储空间,详细描述请参看“开发人员指南 > 基本概念 > OSS基本概念介绍”。
        // Bucket命名规范如下:只能包括小写字母,数字和短横线(-),必须以小写字母或者数字开头,长度必须在3-63字节之间。
        private static String bucketName = "";
    
    
        public static void main(String[] args) {
    
            // 日志配置,OSS Java SDK使用log4j记录错误信息。示例程序会在工程目录下生成“oss-demo.log”日志文件,默认日志级别是INFO。
            // 日志的配置文件是“conf/log4j.properties”,如果您不需要日志,可以没有日志配置文件和下面的日志配置。
            PropertyConfigurator.configure("conf/log4j.properties");
    
            logger.info("Started");
    
            // 生成OSSClient,您可以指定一些参数,详见“SDK手册 > Java-SDK > 初始化”,
            // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/init.html?spm=5176.docoss/sdk/java-sdk/get-start
            OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    
            try {
    
                /*  校验存储空间  */
                // 判断Bucket是否存在。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
                // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
                if (ossClient.doesBucketExist(bucketName)) {
                    System.out.println("您已经创建Bucket:" + bucketName + "。");
                } else {
                    System.out.println("您的Bucket不存在,创建Bucket:" + bucketName + "。");
                    // 创建Bucket。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
                    // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
                    ossClient.createBucket(bucketName);
                }
    
                // 查看Bucket信息。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
                // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
                BucketInfo info = ossClient.getBucketInfo(bucketName);
                System.out.println("Bucket " + bucketName + "的信息如下:");
                System.out.println("	数据中心:" + info.getBucket().getLocation());
                System.out.println("	创建时间:" + info.getBucket().getCreationDate());
                System.out.println("	用户标志:" + info.getBucket().getOwner());
    
    
    
    
                /*遍历存储空间*/
                // 查看Bucket中的Object。详细请参看“SDK手册 > Java-SDK > 管理文件”。
                // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket
                // 指定前缀。
                final String keyPrefix = "**********";
                // 列举包含指定前缀的文件。默认列举100个文件。
                ObjectListing objectListing = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix));
                List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
                System.out.println("您"+keyPrefix+"有以下Object:");
                //文件名+访问路径
                for (OSSObjectSummary s : sums) {
                    if (s.getKey().endsWith("/")) {
                        System.out.println("	" + s.getKey());
                    }else {
                        System.out.println("	" + s.getKey() + "	" + "访问路径:" + "http://**********.oss-cn-huhehaote.aliyuncs.com/" + s.getKey()+"?x-oss-process=image/resize,m_fixed,h_128,w_236");
                    }
                }
    
    
    
            } catch (OSSException oe) {
                oe.printStackTrace();
            } catch (ClientException ce) {
                ce.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                ossClient.shutdown();
            }
    
            logger.info("Completed");
        }
    
    
    
    
    }
    GetObjectsRequestURL.java
    package com.aliyun.oss.demo;
    
    import java.io.*;
    import java.net.URL;
    import java.util.List;
    import java.util.Date;
    import java.util.Random;
    
    import com.aliyun.oss.ClientException;
    import com.aliyun.oss.OSSClient;
    import com.aliyun.oss.OSSException;
    import com.aliyun.oss.model.*;
    
    import org.apache.log4j.Logger;
    import org.apache.log4j.PropertyConfigurator;
    
    
    public class HelloOSS {
        static Logger logger = Logger.getLogger(HelloOSS.class);
    
        // endpoint是访问OSS的域名。如果您已经在OSS的控制台上 创建了Bucket,请在控制台上查看域名。
        // 如果您还没有创建Bucket,endpoint选择请参看文档中心的“开发人员指南 > 基本概念 > 访问域名”,
        // 链接地址是:https://help.aliyun.com/document_detail/oss/user_guide/oss_concept/endpoint.html?spm=5176.docoss/user_guide/endpoint_region
        // endpoint的格式形如“http://oss-cn-hangzhou.aliyuncs.com/”,注意http://后不带bucket名称,
        // 比如“http://bucket-name.oss-cn-hangzhou.aliyuncs.com”,是错误的endpoint,请去掉其中的“bucket-name”。
        private static String endpoint = "http://oss-cn-huhehaote.aliyuncs.com";
    
        // accessKeyId和accessKeySecret是OSS的访问密钥,您可以在控制台上创建和查看,
        // 创建和查看访问密钥的链接地址是:https://ak-console.aliyun.com/#/。
        // 注意:accessKeyId和accessKeySecret前后都没有空格,从控制台复制时请检查并去除多余的空格。
        private static String accessKeyId = "";
        private static String accessKeySecret = "";
    
        // Bucket用来管理所存储Object的存储空间,详细描述请参看“开发人员指南 > 基本概念 > OSS基本概念介绍”。
        // Bucket命名规范如下:只能包括小写字母,数字和短横线(-),必须以小写字母或者数字开头,长度必须在3-63字节之间。
        private static String bucketName = "";
    
    
        public static void main(String[] args) {
    
            // 日志配置,OSS Java SDK使用log4j记录错误信息。示例程序会在工程目录下生成“oss-demo.log”日志文件,默认日志级别是INFO。
            // 日志的配置文件是“conf/log4j.properties”,如果您不需要日志,可以没有日志配置文件和下面的日志配置。
            PropertyConfigurator.configure("conf/log4j.properties");
    
            logger.info("Started");
    
            // 生成OSSClient,您可以指定一些参数,详见“SDK手册 > Java-SDK > 初始化”,
            // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/init.html?spm=5176.docoss/sdk/java-sdk/get-start
            OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    
            try {
    
                /*  校验存储空间  */
                // 判断Bucket是否存在。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
                // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
                if (ossClient.doesBucketExist(bucketName)) {
                    System.out.println("您已经创建Bucket:" + bucketName + "。");
                } else {
                    System.out.println("您的Bucket不存在,创建Bucket:" + bucketName + "。");
                    // 创建Bucket。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
                    // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
                    ossClient.createBucket(bucketName);
                }
    
                // 查看Bucket信息。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
                // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
                BucketInfo info = ossClient.getBucketInfo(bucketName);
                System.out.println("Bucket " + bucketName + "的信息如下:");
                System.out.println("	数据中心:" + info.getBucket().getLocation());
                System.out.println("	创建时间:" + info.getBucket().getCreationDate());
                System.out.println("	用户标志:" + info.getBucket().getOwner());
    
    
    
                /*上传本地图片*/
                //图片全路径
                String filePath = "G://oss//snow.jpg";
                //上传文件全名称
                String newFileKey = getStringRandom(32)+getContentType(filePath);
                InputStream inputStream = new FileInputStream(filePath);
                //上传流文件
                ossClient.putObject(bucketName, "*************/"+newFileKey, inputStream);
    
                // 设置URL过期时间为1小时。
                Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000);
                // 生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容。
                URL url = ossClient.generatePresignedUrl(bucketName, "*************/"+newFileKey, expiration);
                System.out.println(url);
    
                /*遍历存储空间*/
                // 查看Bucket中的Object。详细请参看“SDK手册 > Java-SDK > 管理文件”。
                // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket
                // 指定前缀。
                final String keyPrefix = "*************";
                // 列举包含指定前缀的文件。默认列举100个文件。
                ObjectListing objectListing = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix));
                List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
                System.out.println("您有以下Object:");
                for (OSSObjectSummary s : sums) {
                    System.out.println("	" + s.getKey());
                }
    
                /*下载文件到本地*/
                // 下载OSS文件到本地文件。如果指定的本地文件存在会覆盖,不存在则新建。
                ossClient.getObject(new GetObjectRequest(bucketName, "*************/"+newFileKey), new File("G://oss//"+newFileKey));
    
                /*删除空间文件*/
                // 删除Object。详细请参看“SDK手册 > Java-SDK > 管理文件”。
                // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket
                ossClient.deleteObject(bucketName, newFileKey);
                System.out.println("删除Object:" + newFileKey + "成功。");
    
    
            } catch (OSSException oe) {
                oe.printStackTrace();
            } catch (ClientException ce) {
                ce.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                ossClient.shutdown();
            }
    
            logger.info("Completed");
        }
    
        /**
         *生成随机数字和字母
         * @param length 长度
         * @return  随机字符串
         */
        public static String getStringRandom(int length) {
            String val = "";
            Random random = new Random();
            //参数length,表示生成几位随机数
            for(int i = 0; i < length; i++) {
                String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num";
                //输出字母还是数字
                if( "char".equalsIgnoreCase(charOrNum) ) {
                    //输出是大写字母还是小写字母
                    int temp = random.nextInt(2) % 2 == 0 ? 65 : 97;
                    val += (char)(random.nextInt(26) + temp);
                } else if( "num".equalsIgnoreCase(charOrNum) ) {
                    val += String.valueOf(random.nextInt(10));
                }
            }
            return val;
        }
    
        /**
         * 通过文件名判断并获取OSS服务文件上传时文件的contentType
         * @param fileName 文件名
         * @return 文件的contentType
         */
        public static  String getContentType(String fileName){
            //文件的后缀名
            String fileExtension = fileName.substring(fileName.lastIndexOf("."));
            if(".bmp".equalsIgnoreCase(fileExtension)) {
                return ".bmp";
            }
            if(".gif".equalsIgnoreCase(fileExtension)) {
                return ".gif";
            }
            if(".jpeg".equalsIgnoreCase(fileExtension)) {
                return ".jpeg";
            }
            if(".jpg".equalsIgnoreCase(fileExtension)) {
                return ".jpg";
            }
            if(".png".equalsIgnoreCase(fileExtension) ) {
                return ".png";
            }
            //默认返回类型
            return ".jpeg";
        }
    
    }
    HelloOSS.java
    package com.aliyun.oss.demo;
    
    import com.aliyun.oss.ClientException;
    import com.aliyun.oss.OSSClient;
    import com.aliyun.oss.OSSException;
    import com.aliyun.oss.model.*;
    import org.apache.log4j.Logger;
    import org.apache.log4j.PropertyConfigurator;
    
    import java.util.List;
    
    /**
     * @BelongsProject: maven-demo
     * @BelongsPackage: com.aliyun.oss.demo
     * @Author: Guoyh
     * @CreateTime: 2018-10-11 11:45
     * @Description: oss文件操作管理
     */
    public class ListObjects {
        static Logger logger = Logger.getLogger(HelloOSS.class);
    
        // endpoint是访问OSS的域名。如果您已经在OSS的控制台上 创建了Bucket,请在控制台上查看域名。
        // endpoint的格式形如“http://oss-cn-hangzhou.aliyuncs.com/”,注意http://后不带bucket名称,
        // 比如“http://bucket-name.oss-cn-hangzhou.aliyuncs.com”,是错误的endpoint,请去掉其中的“bucket-name”。
        private static String endpoint = "http://oss-cn-huhehaote.aliyuncs.com";
    
        // accessKeyId和accessKeySecret是OSS的访问密钥,您可以在控制台上创建和查看
        // 注意:accessKeyId和accessKeySecret前后都没有空格,从控制台复制时请检查并去除多余的空格。
        private static String accessKeyId = "";
        private static String accessKeySecret = "";
    
        // Bucket用来管理所存储Object的存储空间,
        // Bucket命名规范如下:只能包括小写字母,数字和短横线(-),必须以小写字母或者数字开头,长度必须在3-63字节之间。
        private static String bucketName = "";
    
        public static void main(String[] args) {
    
            // 日志配置,OSS Java SDK使用log4j记录错误信息。示例程序会在工程目录下生成“oss-demo.log”日志文件,默认日志级别是INFO。
            // 日志的配置文件是“conf/log4j.properties”,如果您不需要日志,可以没有日志配置文件和下面的日志配置。
            PropertyConfigurator.configure("conf/log4j.properties");
    
            logger.info("Started");
    
            // 生成OSSClient,您可以指定一些参数,
            OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    
            try {
                /*  校验存储空间  */
                // 判断Bucket是否存在。
                if (ossClient.doesBucketExist(bucketName)) {
                    System.out.println("您已经创建Bucket:" + bucketName + "。");
                } else {
                    System.out.println("您的Bucket不存在,创建Bucket:" + bucketName + "。");
                    // 创建Bucket。
                    ossClient.createBucket(bucketName);
                }
    
                // 查看Bucket信息。
                BucketInfo info = ossClient.getBucketInfo(bucketName);
                System.out.println("Bucket " + bucketName + "的信息如下:");
                System.out.println("	数据中心:" + info.getBucket().getLocation());
                System.out.println("	创建时间:" + info.getBucket().getCreationDate());
                System.out.println("	用户标志:" + info.getBucket().getOwner());
    
    //
    //            /*遍历存储空间*/
    //            // 查看Bucket中的Object。
    //            // 指定前缀。列举文件
    //            final String keyPrefix = "********";
    //            // 列举包含指定前缀的文件。默认列举100个文件。
    //            ObjectListing objectListingWithPrefix = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix));
    //            List<OSSObjectSummary> sums = objectListingWithPrefix.getObjectSummaries();
    //            System.out.println("您有以下Object:");
    //            for (OSSObjectSummary s : sums) {
    //                System.out.println("	" + s.getKey());
    //            }
    //            System.out.println("	" + "-----------------------------------------------------");
    
    //            // 列举文件。 如果不设置KeyPrefix,则列举存储空间下所有的文件。KeyPrefix,则列举包含指定前缀的文件。
    //            ObjectListing objectListingOne = ossClient.listObjects(bucketName);
    //            List<OSSObjectSummary> sumsOne = objectListingOne.getObjectSummaries();
    //            for (OSSObjectSummary s : sumsOne) {
    //                System.out.println("	" + s.getKey());
    //            }
    //            System.out.println("	" + "-----------------------------------------------------");
    //
    //
    //            // 设置最大个数。
    //            final int maxKeys = 200;
    //            // 列举文件。
    //            ObjectListing objectListingWithMaxKeys = ossClient.listObjects(new ListObjectsRequest(bucketName).withMaxKeys(maxKeys));
    //            List<OSSObjectSummary> sumsPlus = objectListingWithMaxKeys.getObjectSummaries();
    //            for (OSSObjectSummary s : sumsPlus) {
    //                System.out.println("	" + s.getKey());
    //            }
    //            System.out.println("	" + "-----------------------------------------------------");
    
                //分页列举所有文件
                final int maxKey = 200;
                String nextMarker = null;
                ObjectListing objectListing;
    
                do {
                    objectListing = ossClient.listObjects(new ListObjectsRequest(bucketName).withMarker(nextMarker).withMaxKeys(maxKey));
    
                    List<OSSObjectSummary> sumsx = objectListing.getObjectSummaries();
                    for (OSSObjectSummary s : sumsx) {
                        System.out.println("	" + s.getKey());
                    }
    
                    nextMarker = objectListing.getNextMarker();
    
                } while (objectListing.isTruncated());
    
                System.out.println("	" + "-----------------------------------------------------");
    //
    //
    //            // 构造ListObjectsRequest请求。
    //            ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucketName);
    //            // 列出文件。
    //            ObjectListing listing = ossClient.listObjects(listObjectsRequest);
    //            // 遍历所有文件。
    //            System.out.println("Objects:");
    //            for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {
    //                System.out.println(objectSummary.getKey());
    //            }
    //            // 遍历所有commonPrefix。
    //            System.out.println("CommonPrefixes:");
    //            for (String commonPrefix : listing.getCommonPrefixes()) {
    //                System.out.println(commonPrefix);
    //            }
    
            } catch (OSSException oe) {
                oe.printStackTrace();
            } catch (ClientException ce) {
                ce.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                ossClient.shutdown();
            }
    
            logger.info("Completed");
        }
    
    }
    ListObjects.java
    package com.aliyun.oss.demo;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.*;
    import java.net.URL;
    import java.util.List;
    import java.util.Date;
    import java.util.Random;
    
    import com.aliyun.oss.ClientException;
    import com.aliyun.oss.OSSClient;
    import com.aliyun.oss.OSSException;
    import com.aliyun.oss.model.*;
    
    import org.apache.log4j.Logger;
    import org.apache.log4j.PropertyConfigurator;
    
    import javax.swing.*;
    
    
    public class UploadPictures2OSS extends JFrame implements ActionListener {
        static Logger logger = Logger.getLogger(UploadPictures2OSS.class);
    
        // endpoint是访问OSS的域名。如果您已经在OSS的控制台上 创建了Bucket,请在控制台上查看域名。
        // 如果您还没有创建Bucket,endpoint选择请参看文档中心的“开发人员指南 > 基本概念 > 访问域名”,
        // 链接地址是:https://help.aliyun.com/document_detail/oss/user_guide/oss_concept/endpoint.html?spm=5176.docoss/user_guide/endpoint_region
        // endpoint的格式形如“http://oss-cn-hangzhou.aliyuncs.com/”,注意http://后不带bucket名称,
        // 比如“http://bucket-name.oss-cn-hangzhou.aliyuncs.com”,是错误的endpoint,请去掉其中的“bucket-name”。
        private static String endpoint = "http://oss-cn-huhehaote.aliyuncs.com";
    
        // accessKeyId和accessKeySecret是OSS的访问密钥,您可以在控制台上创建和查看,
        // 创建和查看访问密钥的链接地址是:https://ak-console.aliyun.com/#/。
        // 注意:accessKeyId和accessKeySecret前后都没有空格,从控制台复制时请检查并去除多余的空格。
        private static String accessKeyId = "";
        private static String accessKeySecret = "";
    
        // Bucket用来管理所存储Object的存储空间,详细描述请参看“开发人员指南 > 基本概念 > OSS基本概念介绍”。
        // Bucket命名规范如下:只能包括小写字母,数字和短横线(-),必须以小写字母或者数字开头,长度必须在3-63字节之间。
        private static String bucketName = "";
    
        JButton jb = new JButton("选择文件");
    
        public static void main(String[] args) {
            // TODO 自动生成的方法存根
            new UploadPictures2OSS();
        }
    
        public UploadPictures2OSS() {
            jb.setActionCommand("open");
            //设置按钮颜色
            jb.setBackground(Color.LIGHT_GRAY);
            //建立容器使用边界布局
            this.getContentPane().add(jb, BorderLayout.SOUTH);
    
            jb.addActionListener(this);
            this.setTitle("标题");
            this.setSize(333, 288);
            this.setLocation(200, 200);
            //显示窗口true
            this.setVisible(true);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
    
        @Override
        public void actionPerformed(ActionEvent e) {
            if (e.getActionCommand().equals("open")) {
                JFileChooser jf = new JFileChooser();
                //显示打开的文件对话框
                jf.showOpenDialog(this);
                //使用文件类获取选择器选择的文件
                File f = jf.getSelectedFile();
                //返回路径名
                String s = f.getAbsolutePath();
                //JOptionPane弹出对话框类,显示绝对路径名
                //JOptionPane.showMessageDialog(this, s, "标题",JOptionPane.WARNING_MESSAGE);
                uploadPicture(s);
            }
        }
    
        public void uploadPicture(String path) {
            // 日志配置,OSS Java SDK使用log4j记录错误信息。示例程序会在工程目录下生成“oss-demo.log”日志文件,默认日志级别是INFO。
            // 日志的配置文件是“conf/log4j.properties”,如果您不需要日志,可以没有日志配置文件和下面的日志配置。
            PropertyConfigurator.configure("conf/log4j.properties");
    
            logger.info("Started");
    
            // 生成OSSClient,您可以指定一些参数,详见“SDK手册 > Java-SDK > 初始化”,
            // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/init.html?spm=5176.docoss/sdk/java-sdk/get-start
            OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    
            try {
    
                /*  校验存储空间  */
                // 判断Bucket是否存在。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
                // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
                if (ossClient.doesBucketExist(bucketName)) {
                    System.out.println("您已经创建Bucket:" + bucketName + "。");
                } else {
                    System.out.println("您的Bucket不存在,创建Bucket:" + bucketName + "。");
                    // 创建Bucket。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
                    // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
                    ossClient.createBucket(bucketName);
                }
    
                // 查看Bucket信息。详细请参看“SDK手册 > Java-SDK > 管理Bucket”。
                // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_bucket.html?spm=5176.docoss/sdk/java-sdk/init
                BucketInfo info = ossClient.getBucketInfo(bucketName);
                System.out.println("Bucket " + bucketName + "的信息如下:");
                System.out.println("	数据中心:" + info.getBucket().getLocation());
                System.out.println("	创建时间:" + info.getBucket().getCreationDate());
                System.out.println("	用户标志:" + info.getBucket().getOwner());
    
    
    
                /*上传本地图片*/
                //图片全路径
                String filePath = path;
                //上传文件全名称
                String newFileKey = getStringRandom(32) + getContentType(filePath);
                InputStream inputStream = new FileInputStream(filePath);
                //上传流文件
                ossClient.putObject(bucketName, "*********/" + newFileKey, inputStream);
    
                // 设置URL过期时间为1小时。
                Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000);
                // 生成以GET方法访问的签名URL,访客可以直接通过浏览器访问相关内容。
                URL url = ossClient.generatePresignedUrl(bucketName, "*********/" + newFileKey, expiration);
                System.out.println(url);
    
                /*遍历存储空间*/
                // 查看Bucket中的Object。详细请参看“SDK手册 > Java-SDK > 管理文件”。
                // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket
                // 指定前缀。
                final String keyPrefix = "*********";
                // 列举包含指定前缀的文件。默认列举100个文件。
                ObjectListing objectListing = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix));
                List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
                System.out.println("您有以下Object:");
                for (OSSObjectSummary s : sums) {
                    System.out.println("	" + s.getKey());
                }
    
                /*下载文件到本地*/
                //下载OSS文件到本地文件。如果指定的本地文件存在会覆盖,不存在则新建。
    //            ossClient.getObject(new GetObjectRequest(bucketName, "*********/"+newFileKey), new File("G://oss//"+newFileKey));
    
                /*删除空间文件*/
                // 删除Object。详细请参看“SDK手册 > Java-SDK > 管理文件”。
                // 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/sdk/java-sdk/manage_bucket
    //            ossClient.deleteObject(bucketName, "*********/"+newFileKey);
    //            System.out.println("删除Object:" + newFileKey + "成功。");
    
    
            } catch (OSSException oe) {
                oe.printStackTrace();
            } catch (ClientException ce) {
                ce.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                ossClient.shutdown();
            }
    
            logger.info("Completed");
        }
    
        /**
         * 生成随机数字和字母拼接的字符串
         * @param length 返回字符串长度
         * @return
         * @author Guoyh
         * @date 2018/10/10 12:25
         */
        public static String getStringRandom(int length) {
            String val = "";
            Random random = new Random();
            //参数length,表示生成几位随机数
            for (int i = 0; i < length; i++) {
                String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num";
                //输出字母还是数字
                if ("char".equalsIgnoreCase(charOrNum)) {
                    //输出是大写字母还是小写字母
                    int temp = random.nextInt(2) % 2 == 0 ? 65 : 97;
                    val += (char) (random.nextInt(26) + temp);
                } else if ("num".equalsIgnoreCase(charOrNum)) {
                    val += String.valueOf(random.nextInt(10));
                }
            }
            return val;
        }
    
        /**
         * 通过文件名判断并获取OSS服务文件上传时文件的contentType
         *
         * @param fileName 文件名
         * @return 文件的contentType
         */
        public static String getContentType(String fileName) {
            //文件的后缀名
            String fileExtension = fileName.substring(fileName.lastIndexOf("."));
            if (".bmp".equalsIgnoreCase(fileExtension)) {
                return ".bmp";
            }
            if (".gif".equalsIgnoreCase(fileExtension)) {
                return ".gif";
            }
            if (".jpeg".equalsIgnoreCase(fileExtension)) {
                return ".jpeg";
            }
            if (".jpg".equalsIgnoreCase(fileExtension)) {
                return ".jpg";
            }
            if (".png".equalsIgnoreCase(fileExtension)) {
                return ".png";
            }
            //默认返回类型
            return ".jpeg";
        }
    
    }
    UploadPictures2OSS.java
  • 相关阅读:
    关于WPF 中 “System.Windows.Markup.XamlParseException”类型的未经处理的异常在 PresentationFramework.dll 中发生 异常的处理。
    RelativePanel 属性说明
    c# winform中遍历控件
    wpf中遍历界面控件的方法
    wpf 处理倒计时问题
    wpf 处理获取鼠标点击方法
    界面控件委托方式 wpf
    如何在WPF 应用中获取窗体或控件的句柄
    关系型数据库版本控制之(Flask SQLalchemy Alembic )
    项目管理方法论之六西格玛管理
  • 原文地址:https://www.cnblogs.com/angelye/p/9829954.html
Copyright © 2011-2022 走看看