diff --git a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/writebytearray/WriteByteArrayUnitTest.java b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/writebytearray/WriteByteArrayUnitTest.java new file mode 100644 index 0000000000..ef8c8e2470 --- /dev/null +++ b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/writebytearray/WriteByteArrayUnitTest.java @@ -0,0 +1,77 @@ +package com.baeldung.writebytearray; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.nio.file.StandardOpenOption; + +import org.apache.commons.io.FileUtils; +import org.junit.BeforeClass; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; + +import com.google.common.io.ByteSink; +import com.google.common.io.MoreFiles; + +public class WriteByteArrayUnitTest { + private static byte[] dataForWriting; + + @Rule + public TemporaryFolder tempFolder = new TemporaryFolder(); + + @BeforeClass + public static void setup() throws IOException { + dataForWriting = Files.readAllBytes(Paths.get("src/test/resources/example-image.jpg")); + } + + @Test + public void whenUsingFileOutputStream_thenByteArrayIsWritten() throws IOException { + File outputFile = tempFolder.newFile("example-fos.jpg"); + try (FileOutputStream outputStream = new FileOutputStream(outputFile)) { + outputStream.write(dataForWriting); + assertThat(outputFile).hasBinaryContent(dataForWriting); + } + } + + @Test + public void whenUsingNioFiles_thenByteArrayIsWritten() throws IOException { + File outputFile = tempFolder.newFile("example-nio-files.jpg"); + Files.write(outputFile.toPath(), dataForWriting); + assertThat(outputFile).hasBinaryContent(dataForWriting); + } + + @Test + public void whenUsingGuavaFiles_thenByteArrayIsWritten() throws IOException { + File outputFile = tempFolder.newFile("example-guava-files.jpg"); + com.google.common.io.Files.write(dataForWriting, outputFile); + assertThat(outputFile).hasBinaryContent(dataForWriting); + } + + @Test + public void whenUsingGuavaByteSink_thenByteArrayIsWritten() throws IOException { + File outputFile = tempFolder.newFile("example-guava-bs.jpg"); + ByteSink byteSink = com.google.common.io.Files.asByteSink(outputFile); + byteSink.write(dataForWriting); + assertThat(outputFile).hasBinaryContent(dataForWriting); + } + + @Test + public void whenUsingGuavaByteSinkMoreFiles_thenByteArrayIsWritten() throws IOException { + File outputFile = tempFolder.newFile("example-guava-bs.jpg"); + ByteSink byteSink = MoreFiles.asByteSink(outputFile.toPath(), StandardOpenOption.CREATE, StandardOpenOption.WRITE); + byteSink.write(dataForWriting); + assertThat(outputFile).hasBinaryContent(dataForWriting); + } + + @Test + public void whenUsingCommonsIo_thenByteArrayIsWritten() throws IOException { + File outputFile = tempFolder.newFile("example-file-utils.jpg"); + FileUtils.writeByteArrayToFile(outputFile, dataForWriting); + assertThat(outputFile).hasBinaryContent(dataForWriting); + } +} diff --git a/core-java-modules/core-java-io-3/src/test/resources/example-image.jpg b/core-java-modules/core-java-io-3/src/test/resources/example-image.jpg new file mode 100644 index 0000000000..43b8962793 Binary files /dev/null and b/core-java-modules/core-java-io-3/src/test/resources/example-image.jpg differ