web-dev-qa-db-ja.com

AWS s3ファイルをJavaコードに読み取ります

AWS s3から私のJavaコードにファイルを読み取ろうとしました:

  File file = new File("s3n://mybucket/myfile.txt");
  FileInputStream fileInput = new FileInputStream(file);

次に、エラーが発生しました:

Java.io.FileNotFoundException:s3n:/mybucket/myfile.txt(そのようなファイルまたはディレクトリはありません)Java.io.FileInputStream.open(Native Method)at Java.io.FileInputStream。(FileInputStream.Java:146)


AWS s3からファイルを開く/読み取る方法はありますか?どうもありがとう!

14
Edamame

Javaの 'File'クラスは、S3が存在することを理解していません。 AWSドキュメントからファイルを読み取る例です

AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider());        
S3Object object = s3Client.getObject(new GetObjectRequest(bucketName, key));
InputStream objectData = object.getObjectContent();
// Process the objectData stream.
objectData.close();
29
tedder42

2019では、S3からファイルを読み取るためのもう少し最適な方法があります。

private final AmazonS3 amazonS3Client = AmazonS3ClientBuilder.standard().build();

private Collection<String> loadFileFromS3() {
    try (final S3Object s3Object = amazonS3Client.getObject(BUCKET_NAME,
                                                            FILE_NAME);
         final InputStreamReader streamReader = new InputStreamReader(s3Object.getObjectContent(), StandardCharsets.UTF_8);
         final BufferedReader reader = new BufferedReader(streamReader)) {
        return reader.lines().collect(Collectors.toSet());
    } catch (final IOException e) {
        log.error(e.getMessage(), e)
        return Collections.emptySet();
    }
}
8
Enigo