Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在spring boot中,我们可以将csv文件写入S3而不在本地创建文件吗?_Java_Amazon Web Services_Spring Boot_Amazon S3 - Fatal编程技术网

Java 在spring boot中,我们可以将csv文件写入S3而不在本地创建文件吗?

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 我知道的一件事是,我们可以将

我有一些对象集,希望将这些数据作为CSV文件存储在AWS S3 bucket上,而不创建任何本地文件。有谁能建议如何在不影响性能的情况下顺利完成

例如:
设置地址//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();    }