From a2a1068b139fda80fb9e5f1e809dfb383d935c44 Mon Sep 17 00:00:00 2001 From: Abhijeet Mohan Date: Tue, 16 Apr 2024 15:21:17 +0000 Subject: [PATCH] [BAEL-7441] Fixing EOFException in Java --- .../core-java-exceptions-4/README.md | 1 + .../exception/eof/EOFExceptionDemo.java | 16 +++++++++ .../exception/eof/EOFExceptionDemo2.java | 22 ++++++++++++ .../exception/eof/EOFExceptionDemo3.java | 19 ++++++++++ .../eof/EOFExceptionDemo2UnitTest.java | 35 ++++++++++++++++++ .../eof/EOFExceptionDemo3UnitTest.java | 35 ++++++++++++++++++ .../eof/EOFExceptionDemoUnitTest.java | 36 +++++++++++++++++++ 7 files changed, 164 insertions(+) create mode 100644 core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/eof/EOFExceptionDemo.java create mode 100644 core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/eof/EOFExceptionDemo2.java create mode 100644 core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/eof/EOFExceptionDemo3.java create mode 100644 core-java-modules/core-java-exceptions-4/src/test/java/com/baeldung/exception/eof/EOFExceptionDemo2UnitTest.java create mode 100644 core-java-modules/core-java-exceptions-4/src/test/java/com/baeldung/exception/eof/EOFExceptionDemo3UnitTest.java create mode 100644 core-java-modules/core-java-exceptions-4/src/test/java/com/baeldung/exception/eof/EOFExceptionDemoUnitTest.java diff --git a/core-java-modules/core-java-exceptions-4/README.md b/core-java-modules/core-java-exceptions-4/README.md index dc76b90fc7..f95e6991f0 100644 --- a/core-java-modules/core-java-exceptions-4/README.md +++ b/core-java-modules/core-java-exceptions-4/README.md @@ -10,4 +10,5 @@ This module contains articles about core java exceptions - [Get the Current Stack Trace in Java](https://www.baeldung.com/java-get-current-stack-trace) - [Errors and Exceptions in Java](https://www.baeldung.com/java-errors-vs-exceptions) - [Fix the IllegalArgumentException: No enum const class](https://www.baeldung.com/java-fix-no-enum-const-class) +- [How to Fix EOFException in Java](https://www.baeldung.com/java-fix-eofexception) - [[<-- Prev]](../core-java-exceptions-3) diff --git a/core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/eof/EOFExceptionDemo.java b/core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/eof/EOFExceptionDemo.java new file mode 100644 index 0000000000..9e1d687022 --- /dev/null +++ b/core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/eof/EOFExceptionDemo.java @@ -0,0 +1,16 @@ +package com.baeldung.exception.eof; + +import java.io.DataInputStream; +import java.io.InputStream; +import java.io.ByteArrayInputStream; + +public class EOFExceptionDemo { + public static void readInput() throws Exception { + InputStream is = new ByteArrayInputStream("123".getBytes()); + DataInputStream in = new DataInputStream(is); + while (true) { + char value = (char)in.readByte(); + System.out.println("Input value: " + value); + } + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/eof/EOFExceptionDemo2.java b/core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/eof/EOFExceptionDemo2.java new file mode 100644 index 0000000000..837bd4583f --- /dev/null +++ b/core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/eof/EOFExceptionDemo2.java @@ -0,0 +1,22 @@ +package com.baeldung.exception.eof; + +import java.io.DataInputStream; +import java.io.InputStream; +import java.io.ByteArrayInputStream; +import java.io.EOFException; + +public class EOFExceptionDemo2 { + public static void readInput() throws Exception { + InputStream is = new ByteArrayInputStream("123".getBytes()); + DataInputStream in = new DataInputStream(is); + while (true) { + try { + char value = (char)in.readByte(); + System.out.println("Input value: " + value); + } catch (EOFException e) { + System.out.println("End of file"); + break; + } + } + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/eof/EOFExceptionDemo3.java b/core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/eof/EOFExceptionDemo3.java new file mode 100644 index 0000000000..ade729c096 --- /dev/null +++ b/core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/eof/EOFExceptionDemo3.java @@ -0,0 +1,19 @@ +package com.baeldung.exception.eof; + +import java.io.DataInputStream; +import java.io.InputStream; +import java.util.Scanner; +import java.io.ByteArrayInputStream; + +public class EOFExceptionDemo3 { + public static void readInput() { + InputStream is = new ByteArrayInputStream("1 2 3".getBytes()); + Scanner sc = new Scanner(is); + while (sc.hasNextInt()) { + int value = sc.nextInt(); + System.out.println("Input value: " + value); + } + System.out.println("End of file"); + sc.close(); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-exceptions-4/src/test/java/com/baeldung/exception/eof/EOFExceptionDemo2UnitTest.java b/core-java-modules/core-java-exceptions-4/src/test/java/com/baeldung/exception/eof/EOFExceptionDemo2UnitTest.java new file mode 100644 index 0000000000..b3969c01cb --- /dev/null +++ b/core-java-modules/core-java-exceptions-4/src/test/java/com/baeldung/exception/eof/EOFExceptionDemo2UnitTest.java @@ -0,0 +1,35 @@ +package com.baeldung.exception.eof; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.AfterEach; +import java.io.PrintStream; +import java.io.ByteArrayOutputStream; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class EOFExceptionDemo2UnitTest { + + private final PrintStream standardOut = System.out; + private final ByteArrayOutputStream outputStreamCaptor = new ByteArrayOutputStream(); + + @BeforeEach + public void setUp() { + System.setOut(new PrintStream(outputStreamCaptor)); + } + + @AfterEach + public void tearDown() { + System.setOut(standardOut); + } + + @Test + void readInput()throws Exception { + EOFExceptionDemo2.readInput(); + String expectedOuput = "Input value: 1"; + expectedOuput += "\n" + "Input value: 2"; + expectedOuput += "\n" + "Input value: 3"; + expectedOuput += "\n" + "End of file"; + assertEquals(expectedOuput, outputStreamCaptor.toString() + .trim()); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-exceptions-4/src/test/java/com/baeldung/exception/eof/EOFExceptionDemo3UnitTest.java b/core-java-modules/core-java-exceptions-4/src/test/java/com/baeldung/exception/eof/EOFExceptionDemo3UnitTest.java new file mode 100644 index 0000000000..313bd3159d --- /dev/null +++ b/core-java-modules/core-java-exceptions-4/src/test/java/com/baeldung/exception/eof/EOFExceptionDemo3UnitTest.java @@ -0,0 +1,35 @@ +package com.baeldung.exception.eof; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.AfterEach; +import java.io.PrintStream; +import java.io.ByteArrayOutputStream; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class EOFExceptionDemo3UnitTest { + + private final PrintStream standardOut = System.out; + private final ByteArrayOutputStream outputStreamCaptor = new ByteArrayOutputStream(); + + @BeforeEach + public void setUp() { + System.setOut(new PrintStream(outputStreamCaptor)); + } + + @AfterEach + public void tearDown() { + System.setOut(standardOut); + } + + @Test + void readInput() { + EOFExceptionDemo3.readInput(); + String expectedOuput = "Input value: 1"; + expectedOuput += "\n" + "Input value: 2"; + expectedOuput += "\n" + "Input value: 3"; + expectedOuput += "\n" + "End of file"; + assertEquals(expectedOuput, outputStreamCaptor.toString() + .trim()); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-exceptions-4/src/test/java/com/baeldung/exception/eof/EOFExceptionDemoUnitTest.java b/core-java-modules/core-java-exceptions-4/src/test/java/com/baeldung/exception/eof/EOFExceptionDemoUnitTest.java new file mode 100644 index 0000000000..41275523e1 --- /dev/null +++ b/core-java-modules/core-java-exceptions-4/src/test/java/com/baeldung/exception/eof/EOFExceptionDemoUnitTest.java @@ -0,0 +1,36 @@ +package com.baeldung.exception.eof; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.AfterEach; +import java.io.EOFException; +import java.io.PrintStream; +import java.io.ByteArrayOutputStream; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class EOFExceptionDemoUnitTest { + + private final PrintStream standardOut = System.out; + private final ByteArrayOutputStream outputStreamCaptor = new ByteArrayOutputStream(); + + @BeforeEach + public void setUp() { + System.setOut(new PrintStream(outputStreamCaptor)); + } + + @AfterEach + public void tearDown() { + System.setOut(standardOut); + } + + @Test + void readInput_throwsEOFException() { + assertThrows(EOFException.class, () -> EOFExceptionDemo.readInput()); + String expectedOuput = "Input value: 1"; + expectedOuput += "\n" + "Input value: 2"; + expectedOuput += "\n" + "Input value: 3"; + assertEquals(expectedOuput, outputStreamCaptor.toString() + .trim()); + } +} \ No newline at end of file