Java >> Java tutorial >  >> Tag >> byte

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.


Java tag