14 ,java 操作 s3 ( 详细教程 )

一 ,aws 的 java 开发 :

1 ,文章和教程 :

  1. 目的 : 文章和教程部分提供了深入的文档,旨在为使用 AWS 的开发人员提供实际帮助。
  2. 创建人 : 它们由 AWS 开发人员社区或 Amazon 团队的成员创建
  3. 效果 : 基于 AWS 服务的实际使用提供结构化的示例、分析、提示、技巧和指南。

2 ,emr 是什么 :

  1. 官网 : Amazon EMR是一种web服务,可以轻松高效地处理大量数据。Amazon EMR使用Hadoop处理结合几个AWS产品来完成web索引、数据挖掘、日志文件分析、机器学习、科学模拟和数据仓库等任务。
  2. 孙 : 通过点按钮的形式来处理大数据,降低操作难度。

3 ,用于 Java 示例项目的 AWS SDK

一个简单的 Java 应用程序,演示了 AWS SDK 的 Java 使用。

4 ,需要 :

maven

5 ,基本配置 : 安全凭证

aws_access_key_id = <您的访问密钥id>
aws_secret_access_key = <您的密钥>

二 ,java 访问 s3 :

1 ,pom 文件 :



    4.0.0

    com.lifeCycle.spark
    demo01
    1.0-SNAPSHOT

    aws-java-sample
    http://aws.amazon.com/sdkforjava

    
        UTF-8
    

    
        
            com.amazonaws
            aws-java-sdk
            1.11.636
        
    

    
        
            
                ${env.HOME}/.aws/
            
        
        
            
                org.codehaus.mojo
                exec-maven-plugin
                1.2.1
                
                    
                        
                            java
                        
                    
                
                
                    com.amazonaws.samples.S3Sample
                
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.6.1
                
                    1.8
                    1.8
                
            
        
    

2 ,创建桶 :

// 创建桶
public static void main(String[] args) {
    //  创建 s3 对象
    AmazonS3 s3 = new AmazonS3Client();
    //  设置区域 ( 我们使用的是宁夏区域 )
    s3.setRegion(Region.getRegion(Regions.CN_NORTHWEST_1));
    //  桶的名字
    String bucketName = "sflfirst" + UUID.randomUUID();
    //  设置 k
    String key = "sflfirst";
    s3.createBucket(bucketName);
    System.out.println("创建成功");
}

3 ,桶列表 :

//  桶列表
public static void main(String[] args) {
    //  创建 s3 对象
    AmazonS3 s3 = new AmazonS3Client();
    //  设置区域 ( 我们使用的是宁夏区域 )
    s3.setRegion(Region.getRegion(Regions.CN_NORTHWEST_1));
    for (Bucket bucket : s3.listBuckets()) {
        System.out.println(" - " + bucket.getName());
    }
}

4 ,上传文件到桶中 :

//  上传文件到桶中
public static void main(String[] args) {
    //创建 s3 对象
    AmazonS3 s3 = new AmazonS3Client();
    //  设置区域 ( 我们使用的是宁夏区域 )
    s3.setRegion(Region.getRegion(Regions.CN_NORTHWEST_1));
    //  上传文件到桶中
    File file = new File("C:\\Users\\86182\\Desktop\\问题.txt");
    //  桶名,文件夹名,本地问价路径
    s3.putObject("demo02", "wenti", file);
    System.out.println("上传成功...");
}

5 ,桶中文件列表 : 文件夹中的文件也列出来

//  列出桶中所有对象,并且看到文件夹中的文件
public static void main(String[] args) {
    //  创建 s3 对象
    AmazonS3 s3 = new AmazonS3Client();
    //  设置区域 ( 我们使用的是宁夏区域 )
    s3.setRegion(Region.getRegion(Regions.CN_NORTHWEST_1));
    //  文件夹名字 :
    ObjectListing objects = s3.listObjects("demo02");
    do
    {
        for (S3ObjectSummary objectSummary : objects.getObjectSummaries())
        {
            System.out.println("Object: " + objectSummary.getKey());
        }
        objects = s3.listNextBatchOfObjects(objects);
    } while (objects.isTruncated());
}

6 ,文件上传 : 到文件夹中 ( img/wenti )

  1. img 是文件夹名
  2. wenti 是文件名
//  上传文件到文件夹中
public static void main(String[] args) {
    //  创建 s3 对象
    AmazonS3 s3 = new AmazonS3Client();
    //  设置区域 ( 我们使用的是宁夏区域 )
    s3.setRegion(Region.getRegion(Regions.CN_NORTHWEST_1));
    //  上传文件到桶中
    File file = new File("C:\\Users\\86182\\Desktop\\问题.txt");
    //  桶名,文件夹名,本地问价路径
    s3.putObject("demo02", "img/wenti", file);
    System.out.println("上传成功...");
}

7 ,文件下载 :

//  文件下载
publicstatic void main(String[] args) throws IOException {
    //  创建 s3 对象
    AmazonS3 s3 = new AmazonS3Client();
    //  设置区域 ( 我们使用的是宁夏区域 )
    s3.setRegion(Region.getRegion(Regions.CN_NORTHWEST_1));
    //  下载文件 ( 桶名,文件夹名+文件名 )
    S3Object object = s3.getObject(new GetObjectRequest("demo02", "img/wenti"));
    //  得到输入流
    S3ObjectInputStream input = object.getObjectContent();
    //  转换成字符流
    BufferedReader reader = new BufferedReader(new InputStreamReader(input));
    //  自定义输出流
    PrintWriter pw = new PrintWriter("C:\\Users\\86182\\Desktop\\s3inputfile\\myfile.txt");
    //  读这个流
    while (true) {
        String line = reader.readLine();
        if (line == null) break;
        pw.println(line);
    }
    System.out.println("写入成功...");
    reader.close();
    pw.close();
}

8 ,文件列表 : 指定前缀

ObjectListing objectListing = s3.listObjects(new ListObjectsRequest()
                    .withBucketName(bucketName)
                    .withPrefix("My"));
            for (S3ObjectSummary objectSummary : objectListing.getObjectSummaries()) {
                System.out.println(" - " + objectSummary.getKey() + "  " +
                        "(size = " + objectSummary.getSize() + ")");
            }

9 ,删除文件对象 : ( 桶名字,文件夹名+文件名 )

//  删除文件 :
public static void main(String[] args) {
    //  创建 s3 对象
    AmazonS3 s3 = new AmazonS3Client();
    //  设置区域 ( 我们使用的是宁夏区域 )
    s3.setRegion(Region.getRegion(Regions.CN_NORTHWEST_1));
    //  删除文件
    s3.deleteObject("demo02", "img/wenti");
}

10 ,心得 :

  1. s3 的文件管理系统 : 每个文件夹和问价,都是一个存储单元,彼此独立
  2. img : 是一个文件单元。
  3. img/11.jpg :也是一个文件单元。

你可能感兴趣的:(14 ,java 操作 s3 ( 详细教程 ))