如何将 FileInputStream 转换为 S3ObjectInputStream

Posted

技术标签:

【中文标题】如何将 FileInputStream 转换为 S3ObjectInputStream【英文标题】:How to convert FileInputStream to S3ObjectInputStream 【发布时间】:2015-02-11 05:31:54 【问题描述】:

我想将 File InputStream 转换为 S3ObjectInputStream,我用下面的方式尝试过,但没有成功,我得到了

java.io.FileInputStream cannot be cast to com.amazonaws.services.s3.model.S3ObjectInputStream

这是我的代码

InputStream is = new FileInputStream(file);
S3ObjectInputStream sObject = (S3ObjectInputStream)is;

【问题讨论】:

【参考方案1】:

这就是将 inputStream 转换为 S3Object 输入流的方法。确保 src/test/resources 文件夹中存在模拟 S3 文件

private S3ObjectInputStream getMockS3Content() 
        InputStream inputStream = Thread.currentThread()
            .getContextClassLoader()
            .getResourceAsStream("mockS3content.json");
        S3ObjectInputStream s3ObjectInputStream = new S3ObjectInputStream(inputStream,null);
        return s3ObjectInputStream;
    

【讨论】:

【参考方案2】:

使用构造函数

new S3ObjectInputStream(InputStream in, ...

我使用的是 aws-java-sdk 版本 1.11.526

【讨论】:

【参考方案3】:

您需要转换为InputStream

InputStream is = new FileInputStream(file);
S3ObjectInputStream sObject = (InputStream) is;

希望对你有帮助

【讨论】:

是否可以反其道而行之?我可以将 S3ObjectInputStream 转换为 FileInputStream 吗? 这给出了一个ClassCastException。这个答案如何被接受? 不,实际上,代码甚至无法编译。您不能将 InputStream 分配给 S3ObjectInputStream 并且演员表是多余的...is 已被声明为 InputStream..

以上是关于如何将 FileInputStream 转换为 S3ObjectInputStream的主要内容,如果未能解决你的问题,请参考以下文章

将 inputStream 转换为 FileInputStream?

将 ByteArrayOutputStream 转换为 FileInputStream [重复]

java中,如何将InputStream类型的东东转成FileInputStream类型?

用FileInputStream读取数据,计算机如何实现将两个字节拼接成中文的?

java 中 byte[]FileInputStream 互相转换

java 中 byte[]FileInputStream 互相转换