如何将StringBufferInputStream替换为StringReader?

30

使用JNLP,我有以下这行代码:

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

如何将StringBufferInputStream替换为StringReader?StringBufferInputStream的API建议使用StringReader,但如何在不同类型之间进行转换?

2个回答

47

FileSaveService.saveFileDialog需要输入流而不是读取器(因为它需要二进制数据而不是字符数据)。

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

您可以改用ByteArrayInputStream:

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

1
关键点在于InputStream需要知道如何编码您的字节。 - Matt
是的,你需要选择一个编码(如上例中的UTF-8)。 - Thilo
在 Kotlin 中,使用 toByteArray() 代替 getBytes("UTF-8")。https://dev59.com/BVYN5IYBdhLWcg3w574u#46701367 - ThomasW

1

标准的Java类库没有提供一种将Reader封装为InputStream的方法,但以下SO问题及其答案提供了一些解决方案。 请注意仔细阅读细则!

如何将Reader转换为InputStream,Writer转换为OutputStream?

然而,如果这只是单元测试代码...就像@Thilo的答案所描述的那样,使用ByteArrayInputStream替换StringInputStream会更简单。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接