【问题标题】:JAVA InputStream.toString() back to InputStreamJAVA InputStream.toString() 返回 InputStream
【发布时间】:2020-03-14 16:30:22
【问题描述】:

我正在使用一个名为 Sunflow 的旧的废弃 JAVA 渲染器。 在它的某些类中,一种方法将图像InputStream 保存为字符串(InputStream.toString())。 现在我想知道:有没有办法将保存的InputStream.toString() 值转换回InputStream

【问题讨论】:

  • InputStream targetStream = IOUtils.toInputStream(initialString);您也可以查看以下链接,baeldung.com/convert-string-to-input-stream
  • InputStream.toString() 不会将输入流的内容转换为字符串,因此无法从这样的字符串重构内容。

标签: java inputstream tostring


【解决方案1】:

不,InputStream 不会覆盖 toString(),它使用来自 Object 的现有基本实现,它返回:

getClass().getName() + "@" + Integer.toHexString(hashCode())

这个方法调用的结果是这样的:InputStream@<hex_hash_code>,你不能从这个String恢复原来的InputStream

【讨论】:

  • 不幸的是,您是对的:在再次查看 Sunflow 有问题的代码后,我最终创建/添加了自己的简单新方法,该方法实际上将原始 InputStream 保存为 BufferedImage,以后可以直接重复使用。感谢您向我澄清这件事!
【解决方案2】:

你可以这样做:

InputStream stream = new ByteArrayInputStream(mystr.getBytes(StandardCharsets.UTF_8));

假设字符串是 UTF-8 编码的。

【讨论】:

    猜你喜欢
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 2014-06-03
    相关资源
    最近更新 更多