【问题标题】:How to build FileInputStream object with byte array as a parameter如何以字节数组为参数构建 FileInputStream 对象
【发布时间】:2013-11-07 07:10:18
【问题描述】:

我有一个 zip 文件,解码后我得到一个字节数组,现在我想用那个 byte[] 对象创建一个 FileInputStream 对象。我不想创建文件,而是将数据内容传递给 FileInputStream。 有什么办法吗?

以下是代码:

byte[] decodedHeaderFileZip = decodeHeaderZipFile(headerExportFile);
FileInputStream fileInputStream = new FileInputStream(decodedHeaderZipFileString);

编辑: 我想用 FileInputStream 构建一个 ZipInputStream 对象。

【问题讨论】:

    标签: java performance jakarta-ee bytearray fileinputstream


    【解决方案1】:

    我有一个 zip 文件,解码后我得到一个字节数组,现在我想用那个 byte[] 对象创建一个 FileInputStream 对象。

    但是你没有文件。您在内存中有一些数据。所以FileInputStream 是不合适的 - 没有可供读取的文件。

    如果可能,请改用ByteArrayInputStream

    InputStream input = new ByteArrayInputStream(decodedHeaderFileZip);
    

    在可能的情况下,用InputStreamReader 等而不是任何特定的实现来表达您的 API - 这样您就可以灵活地使用哪种实现。 (我的意思是,在可能的情况下,将方法参数和返回类型设置为InputStream 而不是FileInputStream - 这样调用者就不需要提供特定类型。)

    如果您绝对创建FileInputStream,则需要先将数据写入文件。

    【讨论】:

    • 谢谢..但是请您解释一下“用 InputStream、Reader 等而不是任何特定的实现来表达您的 API - 这使您可以灵活地使用哪种实现。”
    • 如 EDIT 中所述.. 与@Jon Skeets 帮助我形成了 InputStream 对象并将其作为参数传递给 ZipInputStream 并且它工作!谢谢你:-)
    • @Rauf:我已经编辑了我的答案来解释我对 API 的意思。目前尚不清楚您是否确实有一个需要FileInputStream 的API,但仍然需要考虑。
    猜你喜欢
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2017-03-01
    相关资源
    最近更新 更多