Java – Læser til Byte Array
Denne hurtige vejledning viser, hvordan man konverterer en læser til en byte[] ved at bruge almindelig Java, Guava og Apache Commons IO-biblioteket.
Denne artikel er en del af "Java - Back to Basic"-serien her på Baeldung.
1. Med Java
Lad os starte med den simple Java-løsning – gå gennem en mellemliggende streng:
@Test
public void givenUsingPlainJava_whenConvertingReaderIntoByteArray_thenCorrect()
throws IOException {
Reader initialReader = new StringReader("With Java");
char[] charArray = new char[8 * 1024];
StringBuilder builder = new StringBuilder();
int numCharsRead;
while ((numCharsRead = initialReader.read(charArray, 0, charArray.length)) != -1) {
builder.append(charArray, 0, numCharsRead);
}
byte[] targetArray = builder.toString().getBytes();
initialReader.close();
}
Bemærk, at læsningen udføres i bidder, ikke ét tegn ad gangen.
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_whenConvertingReaderIntoByteArray_thenCorrect()
throws IOException {
Reader initialReader = CharSource.wrap("With Google Guava").openStream();
byte[] targetArray = CharStreams.toString(initialReader).getBytes();
initialReader.close();
}
Bemærk, at vi bruger den indbyggede utility API for ikke at skulle udføre nogen af lavniveaukonverteringerne i det almindelige Java-eksempel.
3. Med Commons IO
Og endelig – her er en direkte løsning, der understøttes ud af boksen med Commons IO:
@Test
public void givenUsingCommonsIO_whenConvertingReaderIntoByteArray_thenCorrect()
throws IOException {
StringReader initialReader = new StringReader("With Commons IO");
byte[] targetArray = IOUtils.toByteArray(initialReader);
initialReader.close();
}
Og der har du det – 3 hurtige måder at transformere en java-læser på ind i et byte-array. Sørg for at tjekke eksemplet på GitHub.