From 267afc5b318f037af7564c4e017fa8b046424120 Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Mon, 13 Apr 2020 15:09:40 +0530 Subject: [PATCH 1/4] JAVA-620: New module core-java-io-conversions-2 --- .../core-java-io-conversions-2/README.md | 9 + .../core-java-io-conversions-2/pom.xml | 37 +++ .../InputStreamToByteBufferUnitTest.java | 56 ++++ .../JavaInputStreamToXUnitTest.java | 248 ++++++++++++++++++ .../src/test/resources/sample.txt | 1 + .../src/test/resources/targetFile.tmp | 1 + 6 files changed, 352 insertions(+) create mode 100644 core-java-modules/core-java-io-conversions-2/README.md create mode 100644 core-java-modules/core-java-io-conversions-2/pom.xml create mode 100644 core-java-modules/core-java-io-conversions-2/src/test/java/com/baeldung/inputstreamtobytes/InputStreamToByteBufferUnitTest.java create mode 100644 core-java-modules/core-java-io-conversions-2/src/test/java/com/baeldung/inputstreamtostring/JavaInputStreamToXUnitTest.java create mode 100644 core-java-modules/core-java-io-conversions-2/src/test/resources/sample.txt create mode 100644 core-java-modules/core-java-io-conversions-2/src/test/resources/targetFile.tmp diff --git a/core-java-modules/core-java-io-conversions-2/README.md b/core-java-modules/core-java-io-conversions-2/README.md new file mode 100644 index 0000000000..404d4aa400 --- /dev/null +++ b/core-java-modules/core-java-io-conversions-2/README.md @@ -0,0 +1,9 @@ +## Core Java IO Conversions + +This module contains articles about core Java input/output(IO) conversions. + +### Relevant Articles: +- [Java InputStream to String](https://www.baeldung.com/convert-input-stream-to-string) +- [Java InputStream to Byte Array and ByteBuffer](https://www.baeldung.com/convert-input-stream-to-array-of-bytes) +- [Java – Write an InputStream to a File](https://www.baeldung.com/convert-input-stream-to-a-file) +- More articles: [[<-- prev]](/core-java-modules/core-java-io-conversions) diff --git a/core-java-modules/core-java-io-conversions-2/pom.xml b/core-java-modules/core-java-io-conversions-2/pom.xml new file mode 100644 index 0000000000..e95d1f4b67 --- /dev/null +++ b/core-java-modules/core-java-io-conversions-2/pom.xml @@ -0,0 +1,37 @@ + + + 4.0.0 + core-java-io-conversions-2 + 0.1.0-SNAPSHOT + core-java-io-conversions-2 + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + + + core-java-io-conversions + + + src/main/resources + true + + + + + \ No newline at end of file diff --git a/core-java-modules/core-java-io-conversions-2/src/test/java/com/baeldung/inputstreamtobytes/InputStreamToByteBufferUnitTest.java b/core-java-modules/core-java-io-conversions-2/src/test/java/com/baeldung/inputstreamtobytes/InputStreamToByteBufferUnitTest.java new file mode 100644 index 0000000000..c10aaae22a --- /dev/null +++ b/core-java-modules/core-java-io-conversions-2/src/test/java/com/baeldung/inputstreamtobytes/InputStreamToByteBufferUnitTest.java @@ -0,0 +1,56 @@ +package com.baeldung.inputstreamtobytes; + +import com.google.common.io.ByteSource; +import com.google.common.io.ByteStreams; +import org.apache.commons.io.IOUtils; +import org.junit.Test; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.ByteBuffer; +import java.nio.channels.ReadableByteChannel; + +import static java.nio.channels.Channels.newChannel; +import static org.junit.Assert.assertEquals; + +public class InputStreamToByteBufferUnitTest { + + @Test + public void givenUsingCoreClasses_whenByteArrayInputStreamToAByteBuffer_thenLengthMustMatch() throws IOException { + byte[] input = new byte[] { 0, 1, 2 }; + InputStream initialStream = new ByteArrayInputStream(input); + ByteBuffer byteBuffer = ByteBuffer.allocate(3); + while (initialStream.available() > 0) { + byteBuffer.put((byte) initialStream.read()); + } + + assertEquals(byteBuffer.position(), input.length); + } + + @Test + public void givenUsingGuava__whenByteArrayInputStreamToAByteBuffer_thenLengthMustMatch() throws IOException { + InputStream initialStream = ByteSource + .wrap(new byte[] { 0, 1, 2 }) + .openStream(); + byte[] targetArray = ByteStreams.toByteArray(initialStream); + ByteBuffer bufferByte = ByteBuffer.wrap(targetArray); + while (bufferByte.hasRemaining()) { + bufferByte.get(); + } + + assertEquals(bufferByte.position(), targetArray.length); + } + + @Test + public void givenUsingCommonsIo_whenByteArrayInputStreamToAByteBuffer_thenLengthMustMatch() throws IOException { + byte[] input = new byte[] { 0, 1, 2 }; + InputStream initialStream = new ByteArrayInputStream(input); + ByteBuffer byteBuffer = ByteBuffer.allocate(3); + ReadableByteChannel channel = newChannel(initialStream); + IOUtils.readFully(channel, byteBuffer); + + assertEquals(byteBuffer.position(), input.length); + } + +} diff --git a/core-java-modules/core-java-io-conversions-2/src/test/java/com/baeldung/inputstreamtostring/JavaInputStreamToXUnitTest.java b/core-java-modules/core-java-io-conversions-2/src/test/java/com/baeldung/inputstreamtostring/JavaInputStreamToXUnitTest.java new file mode 100644 index 0000000000..eb8c39f2d9 --- /dev/null +++ b/core-java-modules/core-java-io-conversions-2/src/test/java/com/baeldung/inputstreamtostring/JavaInputStreamToXUnitTest.java @@ -0,0 +1,248 @@ +package com.baeldung.inputstreamtostring; + +import com.google.common.base.Charsets; +import com.google.common.io.ByteSource; +import com.google.common.io.ByteStreams; +import com.google.common.io.CharStreams; +import com.google.common.io.Files; +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.*; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.util.Scanner; +import java.util.UUID; + +import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; +import static org.hamcrest.Matchers.equalTo; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; + +@SuppressWarnings("unused") +public class JavaInputStreamToXUnitTest { + protected final Logger logger = LoggerFactory.getLogger(getClass()); + private static final int DEFAULT_SIZE = 1500000; + + // tests - InputStream to String + + @Test + public final void givenUsingJava5_whenConvertingAnInputStreamToAString_thenCorrect() throws IOException { + final String originalString = randomAlphabetic(DEFAULT_SIZE); + final InputStream inputStream = new ByteArrayInputStream(originalString.getBytes()); + + final StringBuilder textBuilder = new StringBuilder(); + try (Reader reader = new BufferedReader(new InputStreamReader(inputStream, Charset.forName(StandardCharsets.UTF_8.name())))) { + int c; + while ((c = reader.read()) != -1) { + textBuilder.append((char) c); + } + } + assertEquals(textBuilder.toString(), originalString); + } + + @Test + public final void givenUsingJava7_whenConvertingAnInputStreamToAString_thenCorrect() throws IOException { + final String originalString = randomAlphabetic(DEFAULT_SIZE); + final InputStream inputStream = new ByteArrayInputStream(originalString.getBytes()); // exampleString.getBytes(StandardCharsets.UTF_8); + + // When + String text; + try (Scanner scanner = new Scanner(inputStream, StandardCharsets.UTF_8.name())) { + text = scanner.useDelimiter("\\A").next(); + } + + assertThat(text, equalTo(originalString)); + } + + @Test + public final void givenUsingGuava_whenConvertingAnInputStreamToAString_thenCorrect() throws IOException { + final String originalString = randomAlphabetic(DEFAULT_SIZE); + final InputStream inputStream = new ByteArrayInputStream(originalString.getBytes()); + + final ByteSource byteSource = new ByteSource() { + @Override + public final InputStream openStream() throws IOException { + return inputStream; + } + }; + + final String text = byteSource.asCharSource(Charsets.UTF_8).read(); + + assertThat(text, equalTo(originalString)); + } + + @Test + public final void givenUsingGuavaAndJava7_whenConvertingAnInputStreamToAString_thenCorrect() throws IOException { + final String originalString = randomAlphabetic(DEFAULT_SIZE); + final InputStream inputStream = new ByteArrayInputStream(originalString.getBytes()); + + // When + String text; + try (final Reader reader = new InputStreamReader(inputStream)) { + text = CharStreams.toString(reader); + } + + assertThat(text, equalTo(originalString)); + } + + @Test + public final void givenUsingCommonsIo_whenConvertingAnInputStreamToAString_thenCorrect() throws IOException { + final String originalString = randomAlphabetic(DEFAULT_SIZE); + final InputStream inputStream = new ByteArrayInputStream(originalString.getBytes()); + + // When + final String text = IOUtils.toString(inputStream, StandardCharsets.UTF_8.name()); + assertThat(text, equalTo(originalString)); + } + + @Test + public final void givenUsingCommonsIoWithCopy_whenConvertingAnInputStreamToAString_thenCorrect() throws IOException { + final String originalString = randomAlphabetic(DEFAULT_SIZE); + final InputStream inputStream = new ByteArrayInputStream(originalString.getBytes()); + + // When + final StringWriter writer = new StringWriter(); + final String encoding = StandardCharsets.UTF_8.name(); + IOUtils.copy(inputStream, writer, encoding); + + assertThat(writer.toString(), equalTo(originalString)); + } + + @Test + public final void givenUsingTempFile_whenConvertingAnInputStreamToAString_thenCorrect() throws IOException { + final String originalString = randomAlphabetic(DEFAULT_SIZE); + final InputStream inputStream = new ByteArrayInputStream(originalString.getBytes()); + + // When + Path tempFile = java.nio.file.Files.createTempDirectory("").resolve(UUID.randomUUID().toString() + ".tmp"); + java.nio.file.Files.copy(inputStream, tempFile, StandardCopyOption.REPLACE_EXISTING); + String result = new String(java.nio.file.Files.readAllBytes(tempFile)); + + assertThat(result, equalTo(originalString)); + } + + // tests - InputStream to byte[] + + @Test + public final void givenUsingPlainJavaOnFixedSizeStream_whenConvertingAnInputStreamToAByteArray_thenCorrect() throws IOException { + final InputStream initialStream = new ByteArrayInputStream(new byte[] { 0, 1, 2 }); + final byte[] targetArray = new byte[initialStream.available()]; + initialStream.read(targetArray); + } + + @Test + public final void givenUsingPlainJavaOnUnknownSizeStream_whenConvertingAnInputStreamToAByteArray_thenCorrect() throws IOException { + final InputStream is = new ByteArrayInputStream(new byte[] { 0, 1, 2 }); + + final ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + int nRead; + final byte[] data = new byte[1024]; + while ((nRead = is.read(data, 0, data.length)) != -1) { + buffer.write(data, 0, nRead); + } + + buffer.flush(); + final byte[] byteArray = buffer.toByteArray(); + } + + @Test + public final void givenUsingGuava_whenConvertingAnInputStreamToAByteArray_thenCorrect() throws IOException { + final InputStream initialStream = ByteSource.wrap(new byte[] { 0, 1, 2 }).openStream(); + final byte[] targetArray = ByteStreams.toByteArray(initialStream); + } + + @Test + public final void givenUsingCommonsIO_whenConvertingAnInputStreamToAByteArray_thenCorrect() throws IOException { + final InputStream initialStream = new ByteArrayInputStream(new byte[] { 0, 1, 2 }); + final byte[] targetArray = IOUtils.toByteArray(initialStream); + } + + // tests - InputStream to File + + @Test + public final void whenConvertingToFile_thenCorrect() throws IOException { + final InputStream initialStream = new FileInputStream(new File("src/test/resources/sample.txt")); + final byte[] buffer = new byte[initialStream.available()]; + initialStream.read(buffer); + + final File targetFile = new File("src/test/resources/targetFile.tmp"); + final OutputStream outStream = new FileOutputStream(targetFile); + outStream.write(buffer); + + IOUtils.closeQuietly(initialStream); + IOUtils.closeQuietly(outStream); + } + + @Test + public final void whenConvertingInProgressToFile_thenCorrect() throws IOException { + final InputStream initialStream = new FileInputStream(new File("src/test/resources/sample.txt")); + final File targetFile = new File("src/test/resources/targetFile.tmp"); + final OutputStream outStream = new FileOutputStream(targetFile); + + final byte[] buffer = new byte[8 * 1024]; + int bytesRead; + while ((bytesRead = initialStream.read(buffer)) != -1) { + outStream.write(buffer, 0, bytesRead); + } + + IOUtils.closeQuietly(initialStream); + IOUtils.closeQuietly(outStream); + } + + @Test + public final void whenConvertingAnInProgressInputStreamToFile_thenCorrect2() throws IOException { + final InputStream initialStream = new FileInputStream(new File("src/test/resources/sample.txt")); + final File targetFile = new File("src/test/resources/targetFile.tmp"); + + java.nio.file.Files.copy(initialStream, targetFile.toPath(), StandardCopyOption.REPLACE_EXISTING); + + IOUtils.closeQuietly(initialStream); + } + + @Test + public final void whenConvertingInputStreamToFile_thenCorrect3() throws IOException { + final InputStream initialStream = new FileInputStream(new File("src/test/resources/sample.txt")); + final byte[] buffer = new byte[initialStream.available()]; + initialStream.read(buffer); + + final File targetFile = new File("src/test/resources/targetFile.tmp"); + Files.write(buffer, targetFile); + + IOUtils.closeQuietly(initialStream); + } + + @Test + public final void whenConvertingInputStreamToFile_thenCorrect4() throws IOException { + final InputStream initialStream = FileUtils.openInputStream(new File("src/test/resources/sample.txt")); + + final File targetFile = new File("src/test/resources/targetFile.tmp"); + + FileUtils.copyInputStreamToFile(initialStream, targetFile); + } + + @Test + public final void givenUsingPlainJava_whenConvertingAnInputStreamToString_thenCorrect() throws IOException { + String originalString = randomAlphabetic(8); + InputStream inputStream = new ByteArrayInputStream(originalString.getBytes()); + + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + int nRead; + byte[] data = new byte[1024]; + while ((nRead = inputStream.read(data, 0, data.length)) != -1) { + buffer.write(data, 0, nRead); + } + + buffer.flush(); + byte[] byteArray = buffer.toByteArray(); + + String text = new String(byteArray, StandardCharsets.UTF_8); + assertThat(text, equalTo(originalString)); + } + +} diff --git a/core-java-modules/core-java-io-conversions-2/src/test/resources/sample.txt b/core-java-modules/core-java-io-conversions-2/src/test/resources/sample.txt new file mode 100644 index 0000000000..5e1c309dae --- /dev/null +++ b/core-java-modules/core-java-io-conversions-2/src/test/resources/sample.txt @@ -0,0 +1 @@ +Hello World \ No newline at end of file diff --git a/core-java-modules/core-java-io-conversions-2/src/test/resources/targetFile.tmp b/core-java-modules/core-java-io-conversions-2/src/test/resources/targetFile.tmp new file mode 100644 index 0000000000..5e1c309dae --- /dev/null +++ b/core-java-modules/core-java-io-conversions-2/src/test/resources/targetFile.tmp @@ -0,0 +1 @@ +Hello World \ No newline at end of file From d0408c7fec269e9db743eca7aef403c43a130cd7 Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Mon, 13 Apr 2020 15:10:22 +0530 Subject: [PATCH 2/4] JAVA-620: Moved articles to new module --- .../core-java-io-conversions/README.md | 3 +- .../InputStreamToByteBufferUnitTest.java | 56 ---- .../JavaInputStreamToXUnitTest.java | 248 ------------------ .../src/test/resources/targetFile.tmp | 1 - 4 files changed, 1 insertion(+), 307 deletions(-) delete mode 100644 core-java-modules/core-java-io-conversions/src/test/java/com/baeldung/inputstreamtobytes/InputStreamToByteBufferUnitTest.java delete mode 100644 core-java-modules/core-java-io-conversions/src/test/java/com/baeldung/inputstreamtostring/JavaInputStreamToXUnitTest.java delete mode 100644 core-java-modules/core-java-io-conversions/src/test/resources/targetFile.tmp diff --git a/core-java-modules/core-java-io-conversions/README.md b/core-java-modules/core-java-io-conversions/README.md index cdb7df04d0..1f12c87241 100644 --- a/core-java-modules/core-java-io-conversions/README.md +++ b/core-java-modules/core-java-io-conversions/README.md @@ -3,10 +3,8 @@ This module contains articles about core Java input/output(IO) conversions. ### Relevant Articles: -- [Java InputStream to String](https://www.baeldung.com/convert-input-stream-to-string) - [Java – Convert File to InputStream](https://www.baeldung.com/convert-file-to-input-stream) - [Java – Byte Array to Writer](https://www.baeldung.com/java-convert-byte-array-to-writer) -- [Java InputStream to Byte Array and ByteBuffer](https://www.baeldung.com/convert-input-stream-to-array-of-bytes) - [Java – String to Reader](https://www.baeldung.com/java-convert-string-to-reader) - [Java – Byte Array to Reader](https://www.baeldung.com/java-convert-byte-array-to-reader) - [Java – File to Reader](https://www.baeldung.com/java-convert-file-to-reader) @@ -15,3 +13,4 @@ This module contains articles about core Java input/output(IO) conversions. - [Java – Write a Reader to File](https://www.baeldung.com/java-write-reader-to-file) - [Java – Reader to Byte Array](https://www.baeldung.com/java-convert-reader-to-byte-array) - [Java – Reader to InputStream](https://www.baeldung.com/java-convert-reader-to-inputstream) +- More articles: [[next -->]](/core-java-modules/core-java-io-conversions-2) diff --git a/core-java-modules/core-java-io-conversions/src/test/java/com/baeldung/inputstreamtobytes/InputStreamToByteBufferUnitTest.java b/core-java-modules/core-java-io-conversions/src/test/java/com/baeldung/inputstreamtobytes/InputStreamToByteBufferUnitTest.java deleted file mode 100644 index c10aaae22a..0000000000 --- a/core-java-modules/core-java-io-conversions/src/test/java/com/baeldung/inputstreamtobytes/InputStreamToByteBufferUnitTest.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.baeldung.inputstreamtobytes; - -import com.google.common.io.ByteSource; -import com.google.common.io.ByteStreams; -import org.apache.commons.io.IOUtils; -import org.junit.Test; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.nio.ByteBuffer; -import java.nio.channels.ReadableByteChannel; - -import static java.nio.channels.Channels.newChannel; -import static org.junit.Assert.assertEquals; - -public class InputStreamToByteBufferUnitTest { - - @Test - public void givenUsingCoreClasses_whenByteArrayInputStreamToAByteBuffer_thenLengthMustMatch() throws IOException { - byte[] input = new byte[] { 0, 1, 2 }; - InputStream initialStream = new ByteArrayInputStream(input); - ByteBuffer byteBuffer = ByteBuffer.allocate(3); - while (initialStream.available() > 0) { - byteBuffer.put((byte) initialStream.read()); - } - - assertEquals(byteBuffer.position(), input.length); - } - - @Test - public void givenUsingGuava__whenByteArrayInputStreamToAByteBuffer_thenLengthMustMatch() throws IOException { - InputStream initialStream = ByteSource - .wrap(new byte[] { 0, 1, 2 }) - .openStream(); - byte[] targetArray = ByteStreams.toByteArray(initialStream); - ByteBuffer bufferByte = ByteBuffer.wrap(targetArray); - while (bufferByte.hasRemaining()) { - bufferByte.get(); - } - - assertEquals(bufferByte.position(), targetArray.length); - } - - @Test - public void givenUsingCommonsIo_whenByteArrayInputStreamToAByteBuffer_thenLengthMustMatch() throws IOException { - byte[] input = new byte[] { 0, 1, 2 }; - InputStream initialStream = new ByteArrayInputStream(input); - ByteBuffer byteBuffer = ByteBuffer.allocate(3); - ReadableByteChannel channel = newChannel(initialStream); - IOUtils.readFully(channel, byteBuffer); - - assertEquals(byteBuffer.position(), input.length); - } - -} diff --git a/core-java-modules/core-java-io-conversions/src/test/java/com/baeldung/inputstreamtostring/JavaInputStreamToXUnitTest.java b/core-java-modules/core-java-io-conversions/src/test/java/com/baeldung/inputstreamtostring/JavaInputStreamToXUnitTest.java deleted file mode 100644 index eb8c39f2d9..0000000000 --- a/core-java-modules/core-java-io-conversions/src/test/java/com/baeldung/inputstreamtostring/JavaInputStreamToXUnitTest.java +++ /dev/null @@ -1,248 +0,0 @@ -package com.baeldung.inputstreamtostring; - -import com.google.common.base.Charsets; -import com.google.common.io.ByteSource; -import com.google.common.io.ByteStreams; -import com.google.common.io.CharStreams; -import com.google.common.io.Files; -import org.apache.commons.io.FileUtils; -import org.apache.commons.io.IOUtils; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.*; -import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; -import java.nio.file.Path; -import java.nio.file.StandardCopyOption; -import java.util.Scanner; -import java.util.UUID; - -import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; -import static org.hamcrest.Matchers.equalTo; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThat; - -@SuppressWarnings("unused") -public class JavaInputStreamToXUnitTest { - protected final Logger logger = LoggerFactory.getLogger(getClass()); - private static final int DEFAULT_SIZE = 1500000; - - // tests - InputStream to String - - @Test - public final void givenUsingJava5_whenConvertingAnInputStreamToAString_thenCorrect() throws IOException { - final String originalString = randomAlphabetic(DEFAULT_SIZE); - final InputStream inputStream = new ByteArrayInputStream(originalString.getBytes()); - - final StringBuilder textBuilder = new StringBuilder(); - try (Reader reader = new BufferedReader(new InputStreamReader(inputStream, Charset.forName(StandardCharsets.UTF_8.name())))) { - int c; - while ((c = reader.read()) != -1) { - textBuilder.append((char) c); - } - } - assertEquals(textBuilder.toString(), originalString); - } - - @Test - public final void givenUsingJava7_whenConvertingAnInputStreamToAString_thenCorrect() throws IOException { - final String originalString = randomAlphabetic(DEFAULT_SIZE); - final InputStream inputStream = new ByteArrayInputStream(originalString.getBytes()); // exampleString.getBytes(StandardCharsets.UTF_8); - - // When - String text; - try (Scanner scanner = new Scanner(inputStream, StandardCharsets.UTF_8.name())) { - text = scanner.useDelimiter("\\A").next(); - } - - assertThat(text, equalTo(originalString)); - } - - @Test - public final void givenUsingGuava_whenConvertingAnInputStreamToAString_thenCorrect() throws IOException { - final String originalString = randomAlphabetic(DEFAULT_SIZE); - final InputStream inputStream = new ByteArrayInputStream(originalString.getBytes()); - - final ByteSource byteSource = new ByteSource() { - @Override - public final InputStream openStream() throws IOException { - return inputStream; - } - }; - - final String text = byteSource.asCharSource(Charsets.UTF_8).read(); - - assertThat(text, equalTo(originalString)); - } - - @Test - public final void givenUsingGuavaAndJava7_whenConvertingAnInputStreamToAString_thenCorrect() throws IOException { - final String originalString = randomAlphabetic(DEFAULT_SIZE); - final InputStream inputStream = new ByteArrayInputStream(originalString.getBytes()); - - // When - String text; - try (final Reader reader = new InputStreamReader(inputStream)) { - text = CharStreams.toString(reader); - } - - assertThat(text, equalTo(originalString)); - } - - @Test - public final void givenUsingCommonsIo_whenConvertingAnInputStreamToAString_thenCorrect() throws IOException { - final String originalString = randomAlphabetic(DEFAULT_SIZE); - final InputStream inputStream = new ByteArrayInputStream(originalString.getBytes()); - - // When - final String text = IOUtils.toString(inputStream, StandardCharsets.UTF_8.name()); - assertThat(text, equalTo(originalString)); - } - - @Test - public final void givenUsingCommonsIoWithCopy_whenConvertingAnInputStreamToAString_thenCorrect() throws IOException { - final String originalString = randomAlphabetic(DEFAULT_SIZE); - final InputStream inputStream = new ByteArrayInputStream(originalString.getBytes()); - - // When - final StringWriter writer = new StringWriter(); - final String encoding = StandardCharsets.UTF_8.name(); - IOUtils.copy(inputStream, writer, encoding); - - assertThat(writer.toString(), equalTo(originalString)); - } - - @Test - public final void givenUsingTempFile_whenConvertingAnInputStreamToAString_thenCorrect() throws IOException { - final String originalString = randomAlphabetic(DEFAULT_SIZE); - final InputStream inputStream = new ByteArrayInputStream(originalString.getBytes()); - - // When - Path tempFile = java.nio.file.Files.createTempDirectory("").resolve(UUID.randomUUID().toString() + ".tmp"); - java.nio.file.Files.copy(inputStream, tempFile, StandardCopyOption.REPLACE_EXISTING); - String result = new String(java.nio.file.Files.readAllBytes(tempFile)); - - assertThat(result, equalTo(originalString)); - } - - // tests - InputStream to byte[] - - @Test - public final void givenUsingPlainJavaOnFixedSizeStream_whenConvertingAnInputStreamToAByteArray_thenCorrect() throws IOException { - final InputStream initialStream = new ByteArrayInputStream(new byte[] { 0, 1, 2 }); - final byte[] targetArray = new byte[initialStream.available()]; - initialStream.read(targetArray); - } - - @Test - public final void givenUsingPlainJavaOnUnknownSizeStream_whenConvertingAnInputStreamToAByteArray_thenCorrect() throws IOException { - final InputStream is = new ByteArrayInputStream(new byte[] { 0, 1, 2 }); - - final ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - int nRead; - final byte[] data = new byte[1024]; - while ((nRead = is.read(data, 0, data.length)) != -1) { - buffer.write(data, 0, nRead); - } - - buffer.flush(); - final byte[] byteArray = buffer.toByteArray(); - } - - @Test - public final void givenUsingGuava_whenConvertingAnInputStreamToAByteArray_thenCorrect() throws IOException { - final InputStream initialStream = ByteSource.wrap(new byte[] { 0, 1, 2 }).openStream(); - final byte[] targetArray = ByteStreams.toByteArray(initialStream); - } - - @Test - public final void givenUsingCommonsIO_whenConvertingAnInputStreamToAByteArray_thenCorrect() throws IOException { - final InputStream initialStream = new ByteArrayInputStream(new byte[] { 0, 1, 2 }); - final byte[] targetArray = IOUtils.toByteArray(initialStream); - } - - // tests - InputStream to File - - @Test - public final void whenConvertingToFile_thenCorrect() throws IOException { - final InputStream initialStream = new FileInputStream(new File("src/test/resources/sample.txt")); - final byte[] buffer = new byte[initialStream.available()]; - initialStream.read(buffer); - - final File targetFile = new File("src/test/resources/targetFile.tmp"); - final OutputStream outStream = new FileOutputStream(targetFile); - outStream.write(buffer); - - IOUtils.closeQuietly(initialStream); - IOUtils.closeQuietly(outStream); - } - - @Test - public final void whenConvertingInProgressToFile_thenCorrect() throws IOException { - final InputStream initialStream = new FileInputStream(new File("src/test/resources/sample.txt")); - final File targetFile = new File("src/test/resources/targetFile.tmp"); - final OutputStream outStream = new FileOutputStream(targetFile); - - final byte[] buffer = new byte[8 * 1024]; - int bytesRead; - while ((bytesRead = initialStream.read(buffer)) != -1) { - outStream.write(buffer, 0, bytesRead); - } - - IOUtils.closeQuietly(initialStream); - IOUtils.closeQuietly(outStream); - } - - @Test - public final void whenConvertingAnInProgressInputStreamToFile_thenCorrect2() throws IOException { - final InputStream initialStream = new FileInputStream(new File("src/test/resources/sample.txt")); - final File targetFile = new File("src/test/resources/targetFile.tmp"); - - java.nio.file.Files.copy(initialStream, targetFile.toPath(), StandardCopyOption.REPLACE_EXISTING); - - IOUtils.closeQuietly(initialStream); - } - - @Test - public final void whenConvertingInputStreamToFile_thenCorrect3() throws IOException { - final InputStream initialStream = new FileInputStream(new File("src/test/resources/sample.txt")); - final byte[] buffer = new byte[initialStream.available()]; - initialStream.read(buffer); - - final File targetFile = new File("src/test/resources/targetFile.tmp"); - Files.write(buffer, targetFile); - - IOUtils.closeQuietly(initialStream); - } - - @Test - public final void whenConvertingInputStreamToFile_thenCorrect4() throws IOException { - final InputStream initialStream = FileUtils.openInputStream(new File("src/test/resources/sample.txt")); - - final File targetFile = new File("src/test/resources/targetFile.tmp"); - - FileUtils.copyInputStreamToFile(initialStream, targetFile); - } - - @Test - public final void givenUsingPlainJava_whenConvertingAnInputStreamToString_thenCorrect() throws IOException { - String originalString = randomAlphabetic(8); - InputStream inputStream = new ByteArrayInputStream(originalString.getBytes()); - - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - int nRead; - byte[] data = new byte[1024]; - while ((nRead = inputStream.read(data, 0, data.length)) != -1) { - buffer.write(data, 0, nRead); - } - - buffer.flush(); - byte[] byteArray = buffer.toByteArray(); - - String text = new String(byteArray, StandardCharsets.UTF_8); - assertThat(text, equalTo(originalString)); - } - -} diff --git a/core-java-modules/core-java-io-conversions/src/test/resources/targetFile.tmp b/core-java-modules/core-java-io-conversions/src/test/resources/targetFile.tmp deleted file mode 100644 index 5e1c309dae..0000000000 --- a/core-java-modules/core-java-io-conversions/src/test/resources/targetFile.tmp +++ /dev/null @@ -1 +0,0 @@ -Hello World \ No newline at end of file From 24b14e377a90129513196ee9cf4b30a37441a531 Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Mon, 13 Apr 2020 15:10:47 +0530 Subject: [PATCH 3/4] JAVA-620: parent pom changes to include new module --- core-java-modules/pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index 3fc978a68c..00ef24be92 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -69,6 +69,7 @@ core-java-io-2 core-java-io-apis core-java-io-conversions + core-java-io-conversions-2 core-java-jar core-java-jndi From 74f5d0ce8ed7cc000cb552d3db9561b0c629c991 Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Mon, 13 Apr 2020 15:19:27 +0530 Subject: [PATCH 4/4] JAVA-620: Updated README --- core-java-modules/core-java-io-conversions-2/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java-io-conversions-2/README.md b/core-java-modules/core-java-io-conversions-2/README.md index 404d4aa400..4a28bf37c5 100644 --- a/core-java-modules/core-java-io-conversions-2/README.md +++ b/core-java-modules/core-java-io-conversions-2/README.md @@ -1,4 +1,4 @@ -## Core Java IO Conversions +## Core Java IO Conversions (Part 2) This module contains articles about core Java input/output(IO) conversions.