1 前言

Amazon S3 (Simple Storage Service)是很常用的文件存储服务,我们的场景是上游把流水文件放到S3,我们再从S3读取并对账。

2 初始化S3

首先要获取相关的账号信息,在Amazon称为:AWSAccessKeyId和AWSSecretKey。然后就可以初始化S3客户端了。代码如下:

private static AmazonS3 initS3Client() {

AWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY);

return AmazonS3ClientBuilder.standard()

.withCredentials(new AWSStaticCredentialsProvider(credentials))

.withRegion(Regions.AP_SOUTHEAST_1)

.build();

}

这里需要指定Region,即Bucket所在的区域。

3 获取文件列表

当我们在Bucket上放了许多文件后,需要查询文件列表,则方法如下:

ObjectListing objects = s3.listObjects(BUCKET_NAME);

但是,如果这个Bucket的文件超过一千个,那上述方法只能获取1000个。想要列出所有,要使用以下方法:

private static List listAllS3Obj(AmazonS3 s3) {

ListObjectsRequest request = new ListObjectsRequest();

request.setBucketName(BUCKET_NAME);

request.setPrefix(prefix);

ObjectListing objects = s3.listObjects(request);

List keyList = new ArrayList<>(objects.getObjectSummaries());

while (objects.isTruncated()) {

objects = s3.listNextBatchOfObjects(objects);

keyList.addAll(objects.getObjectSummaries());

}

return keyList;

}

通过循环,不断获取。还能指定前缀prefix匹配。

4 下载文件

下载文件比较简单,知道文件名就可以了,如下:

private static void downloadOneFromS3(AmazonS3 s3, String filename) throws IOException {

S3Object s3object = s3.getObject(BUCKET_NAME, filename);

S3ObjectInputStream inputStream = s3object.getObjectContent();

FileUtils.copyInputStreamToFile(inputStream, new File(DOWNLOAD_FILES_FOLDER + filename));

}

这个文件名是S3ObjectSummary的key。

5 上传文件

上传文件也是非常简单:

s3.putObject(BUCKET_NAME,"s3.pkslow.txt", new File("local.pkslow.txt"));

6 总结

还有其它更多场景,可以看官方文档或参考AWS S3 with Java。

欢迎关注微信公众号,将持续为你更新...

aws s3 獲取所有文件_通过Java上传下载AWS S3文件,并解决文件数量超过1000的问题...相关推荐

  1. java 微信企业号上传文件_微信企业号上传下载多媒体文件接口详解演示-java

    讲完这篇博客,微信企业号的接口就说完了,下载了我源码的童鞋都知道,里面的备注很详细,但凡看过几遍就都会自己开发了,我说的这些接口至此我已经全部开发完了,剩下的就是你们自己写功能了,都是轻而易举的事情了 ...

  2. springboot上传下载文件(4)--上传下载工具类(已封装)

    因为在做毕设,发现之前的搭建ftp文件服务器,通过ftp协议无法操作虚拟机临时文件,又因为ftp文件服务器搭建的比较麻烦:而 hadoop的HDFS虽然可以实现,但我这里用不到那么复杂的:所以我封装了 ...

  3. 通过putty取linux文件,putty对Linux上传下载文件或文件夹

    putty是一个开源软件,目前为止最新版本为0.70.对于文件或文件夹的上传下载,在Windows下它提供了pscp和psftp两个命令. (1).pscp pscp在命令提示符中使用,只要putty ...

  4. [转]文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)实现汇总1

    转自:http://blog.csdn.net/soarheaven/archive/2008/12/08/3474152.aspx 最近项目需要对FTP服务器进行操作,现把实现总结如下: 打算分2篇 ...

  5. Microsoft .NET Framework 2.0对文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)实现汇总1...

    相关文章导航 Sql Server2005 Transact-SQL 新兵器学习总结之-总结 Flex,Fms3相关文章索引 FlexAir开源版-全球免费多人视频聊天室,免费网络远程多人视频会议系统 ...

  6. minio 文件预览_MinIO安装及使用教程(windows) 及java 上传 下载

    2.新建一个目录存放minio文件,我建的文件名叫 D:\minioData,CMD进入刚刚下载的minio.exe所在目录, 直接在cmd下运行:minio.exe server D:\minioD ...

  7. uploadify java 上传_jquery使用uploadify插件实现多文件的上传(java版)

    2.安装,由于下载下来的例子是php版本的,所以我只留下了主要的几个文件.如图: 4.使用 前台页面: pageEncoding="UTF-8"%> html PUBLIC  ...

  8. java ftp上传文件_jaVA使用FTP上传下载文件的问题

    为了实现 FTP上传下载,大概试了两个方法 sun.net.ftp.FtpClient org.apache.commons.net 一开始使用sun.net.ftp.FtpClient,结果发现唯一 ...

  9. shp文件显示 c语言,上传并在地图中显示Shp文件

    前段时间参与了一个项目,客户有一个功能需求是上传SHP文件并在地图上显示,然后在此基础上做缓冲区处理.经过对比测试,最终选择了shapefile.js工具,在此做个记录. shapfe.js能够将Es ...

最新文章

  1. 一种用户-系统协同的概念模型
  2. HDU-5706(DFS)
  3. 单片机模数转换实验c语言程序,单片机实验AD转换实验
  4. linux7squid编译安装,CentOS 7.3 源码安装squid 4.12 及安装过程遇到的一些问题
  5. python中for循环缩进_Python基础- 缩进,选择和循环
  6. Java并发编程之ReentrantLock重入锁
  7. GNS3 Windows安装
  8. java.lang.Math类的API介绍
  9. js 实现省市县三级联动
  10. python 一个包中的文件调用另外一个包文件 实例
  11. 你必须知道的.NET
  12. Extjs 屏蔽F5
  13. 诺顿误杀真相之“为什么诺顿会误杀中文windows”
  14. 《Redis视频教程》(p6)
  15. 收费系统对接微信公账号流程
  16. word压缩图片怎么弄_Word文档怎么压缩图片?Word图片压缩的方法介绍
  17. 专有名词或英文缩写释义
  18. 变电所无人值守系统的优点
  19. openwrt LEDE 更改默认固件大小
  20. Hdoj 3486 Interviewer(二分加RMQ)

热门文章

  1. impdp使用network_link导入
  2. GJM: Unity3D基于Socket通讯例子 [转载]
  3. python input 与raw_input函数的区别
  4. 符合我公司GIS开源解决方案的探讨
  5. Netbeans、Eclipse中查看JDK源码
  6. C#操作 excel表格
  7. 百度编辑器图片上传功能解疑
  8. ios 内存管理的理解(二)ARC概念及原理
  9. 过拟合怎么产生的?防治措施?
  10. javaweb servlet