質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

1回答

5609閲覧

JavaでAWSのS3からCSVファイルを読み込んで中身を1行ずつ読み込んで処理したい

flumchaso

総合スコア15

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

1クリップ

投稿2019/06/19 05:54

前提・実現したいこと

S3に保存している、CSVファイルを読み込み中身を1行ずつ読み込んで処理したい。

現在、S3にアクセスする部分と1行ずつ処理する部分は以下のようにソースを組みました。
このとき、ローカルに置いてある場合などはこのような形でできると思いますが、S3の際にはどのようにすればこのようになるかご教示いただきたく思います。
FileReaderに当たる部分が現在詰まっている箇所になります。

Java

1FileReader fileReader = new FileReader("/Users/test/Downloads/test.csv"); 2BufferedReader bufferedReader = new BufferedReader(fileReader); 3 4String line; 5// CSVを1行ずつ読み込んで処理する。 6while ((line = bufferedReader.readLine()) != null) { 7 String[] data = line.split(",", 0); 8 ・・・処理・・・ 9}

該当のソースコード

Java

1// 認証情報 2AWSCredentials credentials = new BasicAWSCredentials("アクセスキー", "シークレットキー"); 3 4// クライアント設定 5ClientConfiguration clientConfig = new ClientConfiguration(); 6clientConfig.setProtocol(Protocol.HTTPS); // プロトコル 7clientConfig.setConnectionTimeout(10000); // 接続タイムアウト(ms) 8 9// エンドポイント設定 10AwsClientBuilder.EndpointConfiguration endpointConfiguration = new AwsClientBuilder.EndpointConfiguration(ENDPOINT_URL, REGION); 11 12// クライアント生成 13AmazonS3 client = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(credentials)).withClientConfiguration(clientConfig).withEndpointConfiguration(endpointConfiguration).build(); 14 15S3Object s3Object = client.getObject("バケット名", "ファイル名"); 16 17//以下は仮の実装 18BufferedReader bufferedReader = new BufferedReader(fileReader); 19 20String line; 21// CSVを1行ずつ読み込んで処理する。 22while ((line = bufferedReader.readLine()) != null) { 23 String[] data = line.split(",", 0); 24 ・・・処理・・・ 25}

補足情報(FW/ツールのバージョンなど)

Java8
Spring Boot2.0.2
AWS SDK1.11.573

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

s3Object.getObjectContent()を利用すると InputStreamを返します。
そのため、InputStreamReaderを利用した、
以下のようなコードで処理できると思います(机上で書いたのみで動作確認はしてません)

参考:
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/RetrievingObjectUsingJava.html
https://dev.classmethod.jp/cloud/aws_s3_getobject_error/

Java

1 2・・・省略・・・ 3 4S3Object s3Object = client.getObject("バケット名", "ファイル名"); 5InputStream is = null; 6BufferedReader br = null; 7 8 try { 9 is = s3Object.getObjectContent(); 10 br = new BufferedReader(new InputStreamReader(is, "UTF-8")); 11 12 String line; 13 // CSVを1行ずつ読み込んで処理する。 14 while ((line = br.readLine()) != null) { 15 String[] data = line.split(",", 0); 16 ・・・処理・・・ 17 } 18 19 } finally { 20 if (is != null) { 21 is.close(); 22 } 23 if (br != null) { 24 br.close(); 25 } 26 }

投稿2019/06/19 14:19

kotatu

総合スコア55

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問