From 94ddcd153d6431d5aa4b3c84b97c9636f6a3219f Mon Sep 17 00:00:00 2001 From: DiegoMarti2 <150871541+DiegoMarti2@users.noreply.github.com> Date: Sun, 10 Dec 2023 19:40:01 +0200 Subject: [PATCH 1/9] baeldung-articles : BAEL-6892 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commit to adding two mеthods to convert OutputStream to a byte array. --- .../OutputStreamtoByteArrayUnitTest.java | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamtoByteArrayUnitTest.java diff --git a/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamtoByteArrayUnitTest.java b/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamtoByteArrayUnitTest.java new file mode 100644 index 0000000000..2e46a5c571 --- /dev/null +++ b/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamtoByteArrayUnitTest.java @@ -0,0 +1,56 @@ +package com.baeldung.outputstreamtobytearray; + +import org.apache.commons.io.FileUtils; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.io.*; + +public class OutputStreamtoByteArrayUnitTest { + + @Test + public void givenFileOutputStream_whenUsingFileUtilsToReadTheFile_thenReturnByteArray() throws IOException { + String data = "Welcome to Baeldung!"; + String filePath = "file.txt"; + + try (FileOutputStream outputStream = new FileOutputStream(filePath)) { + outputStream.write(data.getBytes()); + } + + byte[] byteArray = FileUtils.readFileToByteArray(new File(filePath)); + String result = new String(byteArray); + + Assertions.assertEquals(data, result); + } + + + @Test + public void givenFileOutputStream_whenUsingDrainableOutputStream_thenReturnByteArray() throws IOException { + String data = "Welcome to Baeldung!"; + String filePath = "file.txt"; + DrainableOutputStream drainableOutputStream = new DrainableOutputStream(new FileOutputStream(filePath)); + drainableOutputStream.write(data.getBytes()); + byte[] intercepted = drainableOutputStream.toByteArray(); + String result = new String(intercepted); + Assertions.assertEquals(data, result); + } + + public class DrainableOutputStream extends FilterOutputStream { + private final ByteArrayOutputStream buffer; + + public DrainableOutputStream(OutputStream out) { + super(out); + this.buffer = new ByteArrayOutputStream(); + } + + @Override + public void write(byte b[]) throws IOException { + this.buffer.write(b); + super.write(b); + } + + public byte[] toByteArray() { + return this.buffer.toByteArray(); + } + } +} From b56eaf9b1b3d2fadead390b2e34f4ec55b1afb53 Mon Sep 17 00:00:00 2001 From: DiegoMarti2 <150871541+DiegoMarti2@users.noreply.github.com> Date: Sun, 10 Dec 2023 20:53:59 +0200 Subject: [PATCH 2/9] Update OutputStreamtoByteArrayUnitTest.java --- .../OutputStreamtoByteArrayUnitTest.java | 46 ++++++++++++------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamtoByteArrayUnitTest.java b/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamtoByteArrayUnitTest.java index 2e46a5c571..9cbca1ed24 100644 --- a/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamtoByteArrayUnitTest.java +++ b/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamtoByteArrayUnitTest.java @@ -1,26 +1,30 @@ package com.baeldung.outputstreamtobytearray; -import org.apache.commons.io.FileUtils; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; import java.io.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +import static org.junit.Assert.assertEquals; public class OutputStreamtoByteArrayUnitTest { @Test - public void givenFileOutputStream_whenUsingFileUtilsToReadTheFile_thenReturnByteArray() throws IOException { + public void givenFileOutputStream_whenUsingFileUtilsToReadTheFile_thenReturnByteArray(@TempDir Path tempDir) throws IOException { String data = "Welcome to Baeldung!"; - String filePath = "file.txt"; + String fileName = "file.txt"; + Path filePath = tempDir.resolve(fileName); - try (FileOutputStream outputStream = new FileOutputStream(filePath)) { - outputStream.write(data.getBytes()); + try (DrainableOutputStream drainableOutputStream = new DrainableOutputStream(new FileOutputStream(filePath.toFile()))) { + drainableOutputStream.write(data.getBytes()); } - byte[] byteArray = FileUtils.readFileToByteArray(new File(filePath)); - String result = new String(byteArray); - - Assertions.assertEquals(data, result); + byte[] intercepted = Files.readAllBytes(filePath); + String result = new String(intercepted); + assertEquals(data, result); } @@ -28,11 +32,21 @@ public class OutputStreamtoByteArrayUnitTest { public void givenFileOutputStream_whenUsingDrainableOutputStream_thenReturnByteArray() throws IOException { String data = "Welcome to Baeldung!"; String filePath = "file.txt"; - DrainableOutputStream drainableOutputStream = new DrainableOutputStream(new FileOutputStream(filePath)); - drainableOutputStream.write(data.getBytes()); - byte[] intercepted = drainableOutputStream.toByteArray(); + + DrainableOutputStream drainableOutputStream = null; + + try { + drainableOutputStream = new DrainableOutputStream(new FileOutputStream(filePath)); + drainableOutputStream.write(data.getBytes()); + } finally { + if (drainableOutputStream != null) { + drainableOutputStream.close(); + } + } + + byte[] intercepted = Files.readAllBytes(Paths.get(filePath)); String result = new String(intercepted); - Assertions.assertEquals(data, result); + assertEquals(data, result); } public class DrainableOutputStream extends FilterOutputStream { @@ -45,12 +59,12 @@ public class OutputStreamtoByteArrayUnitTest { @Override public void write(byte b[]) throws IOException { - this.buffer.write(b); + buffer.write(b); super.write(b); } public byte[] toByteArray() { - return this.buffer.toByteArray(); + return buffer.toByteArray(); } } } From 4e0e51139b8f11903a218abd0de4250cb5addfdc Mon Sep 17 00:00:00 2001 From: DiegoMarti2 <150871541+DiegoMarti2@users.noreply.github.com> Date: Mon, 11 Dec 2023 17:25:25 +0200 Subject: [PATCH 3/9] Update OutputStreamtoByteArrayUnitTest.java --- .../OutputStreamtoByteArrayUnitTest.java | 38 ++++++++----------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamtoByteArrayUnitTest.java b/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamtoByteArrayUnitTest.java index 9cbca1ed24..fa55623973 100644 --- a/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamtoByteArrayUnitTest.java +++ b/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamtoByteArrayUnitTest.java @@ -1,16 +1,16 @@ package com.baeldung.outputstreamtobytearray; +import org.apache.commons.io.FileUtils; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; import java.io.*; -import java.nio.file.Files; +import java.nio.charset.StandardCharsets; import java.nio.file.Path; -import java.nio.file.Paths; import static org.junit.Assert.assertEquals; -public class OutputStreamtoByteArrayUnitTest { +public class OutputStreamToByteArrayUnitTest { @Test public void givenFileOutputStream_whenUsingFileUtilsToReadTheFile_thenReturnByteArray(@TempDir Path tempDir) throws IOException { @@ -18,35 +18,29 @@ public class OutputStreamtoByteArrayUnitTest { String fileName = "file.txt"; Path filePath = tempDir.resolve(fileName); - try (DrainableOutputStream drainableOutputStream = new DrainableOutputStream(new FileOutputStream(filePath.toFile()))) { - drainableOutputStream.write(data.getBytes()); + try (FileOutputStream outputStream = new FileOutputStream(filePath.toFile())) { + outputStream.write(data.getBytes(StandardCharsets.UTF_8)); } - byte[] intercepted = Files.readAllBytes(filePath); - String result = new String(intercepted); + byte[] writtenData = FileUtils.readFileToByteArray(new File(filePath.toUri())); + String result = new String(writtenData, StandardCharsets.UTF_8); assertEquals(data, result); } @Test - public void givenFileOutputStream_whenUsingDrainableOutputStream_thenReturnByteArray() throws IOException { + public void givenFileOutputStream_whenUsingDrainableOutputStream_thenReturnByteArray(@TempDir Path tempDir) throws IOException { String data = "Welcome to Baeldung!"; - String filePath = "file.txt"; + String fileName = "file.txt"; + Path filePath = tempDir.resolve(fileName); - DrainableOutputStream drainableOutputStream = null; - - try { - drainableOutputStream = new DrainableOutputStream(new FileOutputStream(filePath)); - drainableOutputStream.write(data.getBytes()); - } finally { - if (drainableOutputStream != null) { - drainableOutputStream.close(); - } + try (DrainableOutputStream drainableOutputStream = new DrainableOutputStream(new FileOutputStream(filePath.toFile()))) { + drainableOutputStream.write(data.getBytes(StandardCharsets.UTF_8)); + byte[] writtenData = drainableOutputStream.toByteArray(); + assertEquals(data, new String(writtenData, StandardCharsets.UTF_8)); + } catch (IOException e) { + e.printStackTrace(); } - - byte[] intercepted = Files.readAllBytes(Paths.get(filePath)); - String result = new String(intercepted); - assertEquals(data, result); } public class DrainableOutputStream extends FilterOutputStream { From 3ca05da8590552d746efbf4d2707be418a6b2b2a Mon Sep 17 00:00:00 2001 From: DiegoMarti2 <150871541+DiegoMarti2@users.noreply.github.com> Date: Mon, 11 Dec 2023 17:42:19 +0200 Subject: [PATCH 4/9] Update and rename OutputStreamtoByteArrayUnitTest.java to OutputStreamToByteArrayUnitTest.java --- ...yteArrayUnitTest.java => OutputStreamToByteArrayUnitTest.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/{OutputStreamtoByteArrayUnitTest.java => OutputStreamToByteArrayUnitTest.java} (100%) diff --git a/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamtoByteArrayUnitTest.java b/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java similarity index 100% rename from core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamtoByteArrayUnitTest.java rename to core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java From 47baa5041bd3cdc55125377024252e98eb3d6c71 Mon Sep 17 00:00:00 2001 From: DiegoMarti2 <150871541+DiegoMarti2@users.noreply.github.com> Date: Mon, 11 Dec 2023 19:36:34 +0200 Subject: [PATCH 5/9] Update OutputStreamToByteArrayUnitTest.java --- .../OutputStreamToByteArrayUnitTest.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java b/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java index fa55623973..0082e77cfe 100644 --- a/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java +++ b/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java @@ -22,7 +22,7 @@ public class OutputStreamToByteArrayUnitTest { outputStream.write(data.getBytes(StandardCharsets.UTF_8)); } - byte[] writtenData = FileUtils.readFileToByteArray(new File(filePath.toUri())); + byte[] writtenData = FileUtils.readFileToByteArray(filePath.toFile()); String result = new String(writtenData, StandardCharsets.UTF_8); assertEquals(data, result); } @@ -34,15 +34,19 @@ public class OutputStreamToByteArrayUnitTest { String fileName = "file.txt"; Path filePath = tempDir.resolve(fileName); - try (DrainableOutputStream drainableOutputStream = new DrainableOutputStream(new FileOutputStream(filePath.toFile()))) { + DrainableOutputStream drainableOutputStream = new DrainableOutputStream(new FileOutputStream(filePath.toFile())); + + try { drainableOutputStream.write(data.getBytes(StandardCharsets.UTF_8)); - byte[] writtenData = drainableOutputStream.toByteArray(); - assertEquals(data, new String(writtenData, StandardCharsets.UTF_8)); - } catch (IOException e) { - e.printStackTrace(); + } finally { + drainableOutputStream.close(); } + + byte[] writtenData = drainableOutputStream.toByteArray(); + assertEquals(data, new String(writtenData, StandardCharsets.UTF_8)); } + public class DrainableOutputStream extends FilterOutputStream { private final ByteArrayOutputStream buffer; From 84bf4ee9564772a1bbd372994771ae6e3bec4835 Mon Sep 17 00:00:00 2001 From: DiegoMarti2 <150871541+DiegoMarti2@users.noreply.github.com> Date: Mon, 11 Dec 2023 23:08:50 +0200 Subject: [PATCH 6/9] Update core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java Co-authored-by: Liam Williams --- .../OutputStreamToByteArrayUnitTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java b/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java index 0082e77cfe..f96926c81c 100644 --- a/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java +++ b/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java @@ -8,7 +8,7 @@ import java.io.*; import java.nio.charset.StandardCharsets; import java.nio.file.Path; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; public class OutputStreamToByteArrayUnitTest { From dc98a1c3020c2407d5f9e9e31dd43ee00ddf32b0 Mon Sep 17 00:00:00 2001 From: DiegoMarti2 <150871541+DiegoMarti2@users.noreply.github.com> Date: Mon, 11 Dec 2023 23:08:59 +0200 Subject: [PATCH 7/9] Update core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java Co-authored-by: Liam Williams --- .../OutputStreamToByteArrayUnitTest.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java b/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java index f96926c81c..16dfd68349 100644 --- a/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java +++ b/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java @@ -35,11 +35,8 @@ public class OutputStreamToByteArrayUnitTest { Path filePath = tempDir.resolve(fileName); DrainableOutputStream drainableOutputStream = new DrainableOutputStream(new FileOutputStream(filePath.toFile())); - - try { + try (drainableOutputStream) { drainableOutputStream.write(data.getBytes(StandardCharsets.UTF_8)); - } finally { - drainableOutputStream.close(); } byte[] writtenData = drainableOutputStream.toByteArray(); From 6e7e41cea4195a0df2325d8bf1b6b9f29ff43fd0 Mon Sep 17 00:00:00 2001 From: DiegoMarti2 <150871541+DiegoMarti2@users.noreply.github.com> Date: Wed, 13 Dec 2023 15:51:01 +0200 Subject: [PATCH 8/9] Update OutputStreamToByteArrayUnitTest.java --- .../OutputStreamToByteArrayUnitTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java b/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java index 16dfd68349..0be88b1c07 100644 --- a/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java +++ b/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java @@ -29,12 +29,12 @@ public class OutputStreamToByteArrayUnitTest { @Test - public void givenFileOutputStream_whenUsingDrainableOutputStream_thenReturnByteArray(@TempDir Path tempDir) throws IOException { + public void givenByteArrayOutputStream_whenUsingDrainableOutputStream_thenReturnByteArray() throws IOException { String data = "Welcome to Baeldung!"; - String fileName = "file.txt"; - Path filePath = tempDir.resolve(fileName); - DrainableOutputStream drainableOutputStream = new DrainableOutputStream(new FileOutputStream(filePath.toFile())); + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + DrainableOutputStream drainableOutputStream = new DrainableOutputStream(byteArrayOutputStream); + try (drainableOutputStream) { drainableOutputStream.write(data.getBytes(StandardCharsets.UTF_8)); } From 99e54378c3b5d5a9414226fd0fdf091eee8954ed Mon Sep 17 00:00:00 2001 From: DiegoMarti2 <150871541+DiegoMarti2@users.noreply.github.com> Date: Thu, 14 Dec 2023 00:34:19 +0200 Subject: [PATCH 9/9] Update OutputStreamToByteArrayUnitTest.java --- .../OutputStreamToByteArrayUnitTest.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java b/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java index 0be88b1c07..ed0cab250a 100644 --- a/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java +++ b/core-java-modules/core-java-io-5/src/test/java/com/baeldung/outputstreamtobytearray/OutputStreamToByteArrayUnitTest.java @@ -29,12 +29,10 @@ public class OutputStreamToByteArrayUnitTest { @Test - public void givenByteArrayOutputStream_whenUsingDrainableOutputStream_thenReturnByteArray() throws IOException { - String data = "Welcome to Baeldung!"; - - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - DrainableOutputStream drainableOutputStream = new DrainableOutputStream(byteArrayOutputStream); + public void givenSystemOut_whenUsingDrainableOutputStream_thenReturnByteArray() throws IOException { + String data = "Welcome to Baeldung!\n"; + DrainableOutputStream drainableOutputStream = new DrainableOutputStream(System.out); try (drainableOutputStream) { drainableOutputStream.write(data.getBytes(StandardCharsets.UTF_8)); } @@ -43,7 +41,6 @@ public class OutputStreamToByteArrayUnitTest { assertEquals(data, new String(writtenData, StandardCharsets.UTF_8)); } - public class DrainableOutputStream extends FilterOutputStream { private final ByteArrayOutputStream buffer;