字节数组转Reader

2025/04/06

1. 概述

在本快速教程中,我们将使用纯Java、Guava和Apache Commons IO库将简单的字节数组转换为Reader。

2. 使用纯Java

让我们从简单的Java示例开始,通过中间字符串进行转换:

@Test
public void givenUsingPlainJava_whenConvertingByteArrayIntoReader_thenCorrect() throws IOException {
    byte[] initialArray = "With Java".getBytes();
    Reader targetReader = new StringReader(new String(initialArray));
    targetReader.close();
}

另一种方法是使用InputStreamReader和ByteArrayInputStream:

@Test
public void givenUsingPlainJava2_whenConvertingByteArrayIntoReader_thenCorrect() throws IOException {
    byte[] initialArray = "Hello world!".getBytes();
    Reader targetReader = new InputStreamReader(new ByteArrayInputStream(initialArray));
    targetReader.close();
}

3. Guava

接下来让我们看看Guava解决方案,同样使用中间字符串:

@Test
public void givenUsingGuava_whenConvertingByteArrayIntoReader_thenCorrect() throws IOException {
    byte[] initialArray = "With Guava".getBytes();
    String bufferString = new String(initialArray);
    Reader targetReader = CharSource.wrap(bufferString).openStream();
    targetReader.close();
}

不幸的是,Guava ByteSource实用程序不允许直接转换,因此我们仍然需要使用中间字符串表示形式。

4. 使用Apache Commons IO

类似地,Commons IO也使用中间字符串表示形式将byte[]转换为Reader:

@Test
public void givenUsingCommonsIO_whenConvertingByteArrayIntoReader_thenCorrect() throws IOException {
    byte[] initialArray = "With Commons IO".getBytes();
    Reader targetReader = new CharSequenceReader(new String(initialArray));
    targetReader.close();
}

以上就是将字节数组转换为Java Reader的3种简单方法。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章