【问题标题】:Convert GZIPOutputStream to byte array将 GZIPOutputStream 转换为字节数组
【发布时间】:2019-06-18 07:01:07
【问题描述】:

我已经定义了一个 GZIPOutput 流。现在我想把它转换成字节数组。

我尝试了下面的代码。但它给出了一个错误。

GZIPOutputStream zipStream = createGZIP();
byte[] compressedData = zipStream.toByteArray();

错误:无法解析方法“toByteArray()”

检查了GZIP compression to a byte array,但它正在输入一个字节[]。我需要转换一个我已经拥有的 gzip。

【问题讨论】:

  • 什么是错误,它是在哪里抛出的?
  • 它给出了什么异常或错误?请在此处发布。
  • @Ashish 更新错误
  • 你能发布 createGZIP() 方法吗?

标签: java arrays gzipoutputstream


【解决方案1】:

我有一个已经定义的 GZIPOutput 流。现在我想把它转换成字节数组。

您需要修改创建GZIPOutputStream 的方法,以便将其发送到ByteArrayOutputStream

或者,在关闭您正在(可能)写入压缩数据的文件的FileOutputStream 后,将其打开以进行输入并将其读入字节数组。


关于您当前的尝试:

GZIPOutputStream zipStream = createGZIP();
byte[] compressedData = zipStream.toByteArray();

这种方法行不通。

  • GZIPOutputStream 不提供用于检索压缩数据的 API 方法。
  • GZIPOutputStream 没有提供任何 API 方法来检索 GZIPOutputStream 正在写入的流。 (即使有,大多数 OutputStream 类型也不允许您检索数据......)

一般来说,最好查找并阅读您使用的类的 javadocs。通过猜测他们提供的方法进行编程很可能导致你在猜测错误时浪费你的时间。

【讨论】:

    猜你喜欢
    • 2014-08-08
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    相关资源
    最近更新 更多