亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我們可以在 spring boot 中不在本地創建文件的情況下將 csv 文件寫入 S3 嗎?

我們可以在 spring boot 中不在本地創建文件的情況下將 csv 文件寫入 S3 嗎?

慕少森 2023-05-17 14:54:20
我有一些對象集,想將這些數據作為 CSV 文件存儲在 AWS S3 存儲桶上,而不創建任何本地文件。誰能建議如何在不影響性能的情況下順利完成?例如:Set<Address> addresses;//Address 類包含一些字段,如城市、州、郵政編碼和國家/地區。它應該創建一個包含以下標題和數據的 csv 文件:City, State, ZipCode, Country-----------------------------Mumbai, Maharashtra, 4200091, India我知道的一件事是我們可以將數據寫入 InputStream,然后將其傳遞給 -PutObjectRequest。但是 InputStream 也需要文件路徑我不想浪費時間創建臨時文件而且我有多個操作要做。PutObjectRequest putObj = new PutObjectRequest(bucketName, KeyName, inputStream, metadata); s3client.putObject(putObj);在此先感謝您的幫助和時間。
查看完整描述

2 回答

?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

你可以這樣做:


創建 csv 輸出流:(參考:)

要添加的依賴項(使用的示例請參考上面的鏈接):


<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();    }

通過字節數組將輸出流轉換為輸入流:


InputStream inputStream = new ByteArrayInputStream(stream.toByteArray());


將此流傳遞給 S3 PutObjectRequest


查看完整回答
反對 回復 2023-05-17
?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

InputStream是一個抽象類(也許應該是一個接口)。您可以使用任何 InputStream 的子類或可以生成 InputStream 的任何東西,例如將流式傳輸 StringBuffer 的StringBufferInputStream 。


查看完整回答
反對 回復 2023-05-17
  • 2 回答
  • 0 關注
  • 199 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號