如何将ByteArrayOutputStream转换为Reader。

5

Having

ByteArrayOutputStream b = ...;

//some code under test writes to b

 Reader result = (convert b to reader);

 IOUtils.contentEqualsIgnoreEOL(expected, result);

如何将ByteArrayOutputStream转换为Reader
1个回答

17
你可以尝试。
ByteArrayOutputStream baos = 
Reader reader = new InputStreamReader(new ByteArrayInputStream(baos.toByteArray()));

一个更简单的解决方案是检查缓冲区的内容。

assertEquals(expected, baos.toString().trim());

2
这样做是可行的,但是这样你会复制所有的数据。难道没有避免这种情况的方法吗? - Martijn Courteaux
除非你自己实现,否则不可能。如果你担心效率问题,可以使用 StringBuilder 来避免编码/解码所需的时间(或者使用包装它的某些东西)。由于这是用于单元测试,正确性比效率更重要。 - Peter Lawrey
@MartijnCourteaux - 如果你使用ByteArrayInputStream开始,就不会有这个问题。对于OP的用例,这并不重要。 - Stephen C
我需要任何 OutputStream 实现.. 它需要与文件中的某些内容进行比较。 - Queequeg
在这种情况下,我会使用 ByteArrayOutputStream 并在完成后使用 toString()。 - Peter Lawrey

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