aws s3 獲取所有文件_通过Java上传下载AWS S3文件,并解决文件数量超过1000的问题...
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的问题...相关推荐
- java 微信企业号上传文件_微信企业号上传下载多媒体文件接口详解演示-java
讲完这篇博客,微信企业号的接口就说完了,下载了我源码的童鞋都知道,里面的备注很详细,但凡看过几遍就都会自己开发了,我说的这些接口至此我已经全部开发完了,剩下的就是你们自己写功能了,都是轻而易举的事情了 ...
- springboot上传下载文件(4)--上传下载工具类(已封装)
因为在做毕设,发现之前的搭建ftp文件服务器,通过ftp协议无法操作虚拟机临时文件,又因为ftp文件服务器搭建的比较麻烦:而 hadoop的HDFS虽然可以实现,但我这里用不到那么复杂的:所以我封装了 ...
- 通过putty取linux文件,putty对Linux上传下载文件或文件夹
putty是一个开源软件,目前为止最新版本为0.70.对于文件或文件夹的上传下载,在Windows下它提供了pscp和psftp两个命令. (1).pscp pscp在命令提示符中使用,只要putty ...
- [转]文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)实现汇总1
转自:http://blog.csdn.net/soarheaven/archive/2008/12/08/3474152.aspx 最近项目需要对FTP服务器进行操作,现把实现总结如下: 打算分2篇 ...
- Microsoft .NET Framework 2.0对文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)实现汇总1...
相关文章导航 Sql Server2005 Transact-SQL 新兵器学习总结之-总结 Flex,Fms3相关文章索引 FlexAir开源版-全球免费多人视频聊天室,免费网络远程多人视频会议系统 ...
- minio 文件预览_MinIO安装及使用教程(windows) 及java 上传 下载
2.新建一个目录存放minio文件,我建的文件名叫 D:\minioData,CMD进入刚刚下载的minio.exe所在目录, 直接在cmd下运行:minio.exe server D:\minioD ...
- uploadify java 上传_jquery使用uploadify插件实现多文件的上传(java版)
2.安装,由于下载下来的例子是php版本的,所以我只留下了主要的几个文件.如图: 4.使用 前台页面: pageEncoding="UTF-8"%> html PUBLIC ...
- java ftp上传文件_jaVA使用FTP上传下载文件的问题
为了实现 FTP上传下载,大概试了两个方法 sun.net.ftp.FtpClient org.apache.commons.net 一开始使用sun.net.ftp.FtpClient,结果发现唯一 ...
- shp文件显示 c语言,上传并在地图中显示Shp文件
前段时间参与了一个项目,客户有一个功能需求是上传SHP文件并在地图上显示,然后在此基础上做缓冲区处理.经过对比测试,最终选择了shapefile.js工具,在此做个记录. shapfe.js能够将Es ...
最新文章
- 一种用户-系统协同的概念模型
- HDU-5706(DFS)
- 单片机模数转换实验c语言程序,单片机实验AD转换实验
- linux7squid编译安装,CentOS 7.3 源码安装squid 4.12 及安装过程遇到的一些问题
- python中for循环缩进_Python基础- 缩进,选择和循环
- Java并发编程之ReentrantLock重入锁
- GNS3 Windows安装
- java.lang.Math类的API介绍
- js 实现省市县三级联动
- python 一个包中的文件调用另外一个包文件 实例
- 你必须知道的.NET
- Extjs 屏蔽F5
- 诺顿误杀真相之“为什么诺顿会误杀中文windows”
- 《Redis视频教程》(p6)
- 收费系统对接微信公账号流程
- word压缩图片怎么弄_Word文档怎么压缩图片?Word图片压缩的方法介绍
- 专有名词或英文缩写释义
- 变电所无人值守系统的优点
- openwrt LEDE 更改默认固件大小
- Hdoj 3486 Interviewer(二分加RMQ)