Java - Pembaca ke Rentetan

Dalam tutorial ringkas ini kita akan mengubah Reader menjadi String menggunakan perpustakaan Java, Guava dan Apache Commons IO biasa.

Artikel ini adalah sebahagian daripada siri "Java - Back to Basic" di Baeldung.

1. Dengan Java

Mari kita mulakan dengan penyelesaian Java mudah yang membaca watak secara berurutan dari Pembaca :

@Test public void givenUsingPlainJava_whenConvertingReaderIntoStringV1_thenCorrect() throws IOException { StringReader reader = new StringReader("text"); int intValueOfChar; String targetString = ""; while ((intValueOfChar = reader.read()) != -1) { targetString += (char) intValueOfChar; } reader.close(); }

Sekiranya terdapat banyak kandungan untuk dibaca, penyelesaian baca pukal akan berfungsi dengan lebih baik:

@Test public void givenUsingPlainJava_whenConvertingReaderIntoStringV2_thenCorrect() throws IOException { Reader initialReader = new StringReader("text"); char[] arr = new char[8 * 1024]; StringBuilder buffer = new StringBuilder(); int numCharsRead; while ((numCharsRead = initialReader.read(arr, 0, arr.length)) != -1) { buffer.append(arr, 0, numCharsRead); } initialReader.close(); String targetString = buffer.toString(); }

2. Dengan Jambu Batu

Jambu batu menyediakan utiliti yang dapat melakukan penukaran secara langsung :

@Test public void givenUsingGuava_whenConvertingReaderIntoString_thenCorrect() throws IOException { Reader initialReader = CharSource.wrap("With Google Guava").openStream(); String targetString = CharStreams.toString(initialReader); initialReader.close(); }

3. Dengan Commons IO

Sama dengan Apache Commons IO - ada utiliti IO yang mampu melakukan penukaran langsung :

@Test public void givenUsingCommonsIO_whenConvertingReaderIntoString_thenCorrect() throws IOException { Reader initialReader = new StringReader("With Apache Commons"); String targetString = IOUtils.toString(initialReader); initialReader.close(); }

Dan di sana anda memilikinya - 4 cara mengubah Pembaca menjadi Rentetan biasa. Pastikan untuk memeriksa sampel di GitHub.