Java 在spring boot中,我们可以将csv文件写入S3而不在本地创建文件吗?
我有一些对象集,希望将这些数据作为CSV文件存储在AWS S3 bucket上,而不创建任何本地文件。有谁能建议如何在不影响性能的情况下顺利完成 例如:Java 在spring boot中,我们可以将csv文件写入S3而不在本地创建文件吗?,java,amazon-web-services,spring-boot,amazon-s3,Java,Amazon Web Services,Spring Boot,Amazon S3,我有一些对象集,希望将这些数据作为CSV文件存储在AWS S3 bucket上,而不创建任何本地文件。有谁能建议如何在不影响性能的情况下顺利完成 例如:设置地址//Address类包含一些字段,如城市、州、zipcode和国家/地区 它应创建具有以下标题和数据的csv文件: City, State, ZipCode, Country ----------------------------- Mumbai, Maharashtra, 4200091, India 我知道的一件事是,我们可以将
设置地址代码>//Address类包含一些字段,如城市、州、zipcode和国家/地区
它应创建具有以下标题和数据的csv文件:
City, State, ZipCode, Country
-----------------------------
Mumbai, Maharashtra, 4200091, India
我知道的一件事是,我们可以将数据写入InputStream,然后将其传递给-PutObjectRequest。但InputStream也采用文件路径,我不想浪费时间创建临时文件,而且我有多个操作要做
PutObjectRequest putObj = new PutObjectRequest(bucketName, KeyName, inputStream, metadata);
s3client.putObject(putObj);
提前感谢您的帮助和时间。是一个抽象类(可能应该是一个接口)。您可以使用任何将InputStream子类化或生成InputStream的内容,例如将StringBuffer流化的内容。您可以执行以下操作:
创建csv输出流:()
要添加的依赖项(有关所使用的示例,请参阅上面的链接):
通过字节数组将输出流转换为输入流:
InputStream InputStream=newbytearrayinputstream(stream.toByteArray())代码>
将此流传递给S3 PutObjectRequest
感谢@Ankur的帮助,但您使用的是什么版本的CSVWriter?它不将流作为参数,而是接受Writer对象。我使用的是所有最新版本。@Laksh.S,我已编辑了答案以添加此示例使用的依赖项。我也分享了我浏览过的链接。谢谢!这真的很有帮助。
<dependency>
<groupId>net.sourceforge.javacsv</groupId>
<artifactId>javacsv</artifactId>
<version>2.0</version> </dependency>
public void createCsv() throws Exception {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
CsvWriter writer = new CsvWriter(stream, ',', Charset
.forName("ISO-8859-1"));
writer.setRecordDelimiter(';');
// WRITE Your CSV Here
//writer.write("a;b");
writer.endRecord();
writer.close();
stream.close(); }