java - 如何读取 Amazon S3 中的文件内容

标签 java amazon-web-services file-io amazon-s3

我在 Amazon S3 存储桶 ABCD 中有一个文件。我有 3 个对象 ("folderA/folderB/folderC/abcd.csv") 是文件夹,在最后一个文件夹中我有一个 .csv 文件 (abcd .csv)。我使用逻辑将其转换为 JSON 并将其加载回另一个文件,该文件是同一文件夹 ("folderA/folderB/文件夹C/abcd.txt")。为此,我必须在本地下载文件。我将如何直接读取文件并将其写回文本文件。下面是我用来写入 S3 文件的代码,我需要从 S3 读取文件。

 InputStream inputStream = new ByteArrayInputStream(json.getBytes(StandardCharsets.UTF_16));
 ObjectMetadata metadata = new ObjectMetadata();
 metadata.setContentLength(json.length());
 PutObjectRequest request = new PutObjectRequest(bucketPut, filePut, inputStream, metadata);
 s3.putObject(request);

最佳答案

首先,您应该获取对象 InputStream 来满足您的需要。

S3Object object = s3Client.getObject(new GetObjectRequest(bucketName, key));
InputStream objectData = object.getObjectContent();

InputStreamFile Namepath 传递给以下方法以下载您的流。

public void saveFile(String fileName, String path, InputStream objectData) throws Exception {
    DataOutputStream dos = null;
    OutputStream out = null;
    try {
        File newDirectory = new File(path);
        if (!newDirectory.exists()) {
            newDirectory.mkdirs();
        }

        File uploadedFile = new File(path, uploadFileName);
        out = new FileOutputStream(uploadedFile);
        byte[] fileAsBytes = new byte[inputStream.available()];
        inputStream.read(fileAsBytes);

        dos = new DataOutputStream(out);
        dos.write(fileAsBytes);
    } catch (IOException io) {
        io.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if (out != null) {
                out.close();
            }
            if (dos != null) {
                dos.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

下载对象后,读取文件并将其转换为 JSON 并将其写入 .txt 文件,之后您可以上传 txt 文件到 S3

中所需的存储桶

关于java - 如何读取 Amazon S3 中的文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27318587/

相关文章:

java - 使用 GUI 和 MySQL 数据库制作程序

java - 使用自定义阵列适配器 Android 进行文本转语音

c - c中的指针和动态内存分配

java - 如何有意义地记录 actor 设计

amazon-web-services - 验证电子邮件是否适用于 AWS Cognito 每日电子邮件配额?

amazon-web-services - 无法使用 !Ref 在 Cloudformation 中创建 AWS Batch JobDefinition JobRoleArn

amazon-web-services - AWS云表单任务定义条件命令

python - 确保我的程序没有执行并发文件写入

jquery - 检查输入文件字段是否为空jquery

java - 如何在Java命令行中打印十字形状?