Java – Byte Array til Reader
I denne hurtige selvstudie skal vi konvertere en simpel byte-array til en Reader ved at bruge almindelig Java, Guava og endelig Apache Commons IO-biblioteket.
Denne artikel er en del af "Java - Back to Basic"-serien her på Baeldung.
1. Med almindelig Java
Lad os starte med det simple Java-eksempel, hvor konverteringen udføres via en mellemliggende streng:
@Test
public void givenUsingPlainJava_whenConvertingByteArrayIntoReader_thenCorrect()
throws IOException {
byte[] initialArray = "With Java".getBytes();
Reader targetReader = new StringReader(new String(initialArray));
targetReader.close();
}
En alternativ fremgangsmåde ville være at gøre brug af en InputStreamReader og en ByteArrayInputStream :
@Test
public void givenUsingPlainJava2_whenConvertingByteArrayIntoReader_thenCorrect()
throws IOException {
byte[] initialArray = "Hello world!".getBytes();
Reader targetReader = new InputStreamReader(new ByteArrayInputStream(initialArray));
targetReader.close();
}
2. Med Guava
Dernæst – lad os tage et kig på Guava-løsningen, også ved hjælp af en mellemliggende streng:
@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();
}
Desværre Guava ByteSource værktøjet tillader ikke en direkte konvertering, så vi skal stadig bruge den mellemliggende strengrepræsentation.
3. Med Apache Commons IO
Tilsvarende – Commons IO bruger også en mellemliggende strengrepræsentation til at konvertere byten[] til en læser:
@Test
public void givenUsingCommonsIO_whenConvertingByteArrayIntoReader_thenCorrect()
throws IOException {
byte[] initialArray = "With Commons IO".getBytes();
Reader targetReader = new CharSequenceReader(new String(initialArray));
targetReader.close();
}
Og der har vi det – 3 enkle måder at konvertere byte-arrayet til en Java Reader . Sørg for at tjekke eksemplet på GitHub.