【问题标题】:How to replace StringBufferInputStream with StringReader?如何用 StringReader 替换 StringBufferInputStream?
【发布时间】:2010-02-08 03:43:37
【问题描述】:

使用 JNLP,我有这一行:

File_Save_Service.saveFileDialog(null,null,new StringBufferInputStream("testing"),null);

如何在这一行中用 StringReader 替换 StringBufferInputStream ? StringBufferInputStream 的 API 说最好用 StringReader,但是不同类型之间如何转换呢?

【问题讨论】:

    标签: java stringreader


    【解决方案1】:

    FileSaveService.saveFileDialog 采用 InputStream,而不是 Reader(因为它需要二进制数据,而不是字符数据)。

    StringBufferInputStream 已被弃用,因为它不能正确地将字符转换为字节。

    您可以改用 ByteArrayInputStream:

    new ByteArrayInputStream("the string".getBytes("UTF-8"))
    

    【讨论】:

    • 关键是 InputStream 需要知道如何编码你的字节。
    • 是的,您需要选择一种编码(上例中为 UTF-8)。
    • 在 Kotlin 中,使用 toByteArray() 而不是 getBytes("UTF-8") stackoverflow.com/a/46701367/211292
    【解决方案2】:

    标准 Java 类库无法将 Reader 包装为 InputStream,但以下 SO 问题及其答案提供了一些解决方案。仔细阅读细则!

    How to convert a Reader to InputStream and a Writer to OutputStream?

    但是,坚持使用你所拥有的更简单(如果这只是单元测试代码......看起来就是这样),或者用ByteArrayInputStream 替换StringInputStream,如所述@Thilo 的回答。

    【讨论】:

      猜你喜欢
      • 2015-08-08
      • 2013-07-19
      • 2014-08-27
      • 1970-01-01
      • 2011-01-10
      • 2013-08-06
      • 1970-01-01
      • 2020-10-13
      • 1970-01-01
      相关资源
      最近更新 更多