gpt4 book ai didi

java - 如何在 AWS S3 存储桶中使用 Java 读取压缩的 CSV 文件?

转载 作者:行者123 更新时间:2023-11-30 07:03:42 29 4
gpt4 key购买 nike

我有一个要求,我必须从 S3 存储桶中读取一个 .csv 文件。我通过它实现了

S3Object s3Obj = amazonS3Client.getObject(bucketname, fileName);
BufferedReader reader = new BufferedReader(new InputStreamReader(s3Obj.getObjectContent()));

现在相同的 .csv 文件以存档(压缩)形式呈现在 AWS S3 存储桶中。我需要在我的服务器端读取此 .csv 文件而不进行解压缩操作。

AWS 中是否有任何文档或 API 可以直接读取 .csv 文件而无需解压缩?

最佳答案

您可以通过以下步骤直接从 Amazon S3 读取压缩的 CSV 文件:

  1. 从S3获取对象
  2. 使用对象的数据创建一个 ZipInputStream
  3. 使用 ZipInputStream 创建一个阅读器

例子:

AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();  
S3Object object = s3Client.getObject("mybucket","myfile.csv.zip");
ZipInputStream in = new ZipInputStream(object.getObjectContent());
BufferedReader reader = new BufferedReader(new InputStreamReader(in));

因为一个 zip 文件可以包含许多文件,您需要将 ZipInputStream 定位在每个 ZipEntry 的开头以单独读取每个包含的文件。 (即使您的 zip 文件只包含一个文件,您也需要执行一次此操作以将 ZipInputStream 放在单独的 ZipEntry 的开头。)

String line;
while (in.getNextEntry() != null) { // loop through each file within the zip
while ((line = reader.readLine()) != null) { // loop through each line
System.out.println(line);
}
}

关于java - 如何在 AWS S3 存储桶中使用 Java 读取压缩的 CSV 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28170429/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com