Merge pull request #15809 from anujgaud/system-in-read
[BAEL-7405] Add support for System read methods
This commit is contained in:
commit
1fb71a4cde
|
@ -0,0 +1,45 @@
|
|||
package com.baeldung.systemin;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
class SystemInRead {
|
||||
static void readSingleCharacter() {
|
||||
System.out.println("Enter a character:");
|
||||
try {
|
||||
int input = System.in.read();
|
||||
System.out.println((char) input);
|
||||
}
|
||||
catch (IOException e) {
|
||||
System.err.println("Error reading input: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
static void readMultipleCharacters() {
|
||||
System.out.println("Enter characters (Press 'Enter' to quit):");
|
||||
try {
|
||||
int input;
|
||||
while ((input = System.in.read()) != '\n') {
|
||||
System.out.print((char) input);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
System.err.println("Error reading input: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
static void readWithParameters() {
|
||||
try {
|
||||
byte[] byteArray = new byte[5];
|
||||
int bytesRead;
|
||||
int totalBytesRead = 0;
|
||||
|
||||
while ((bytesRead = System.in.read(byteArray, 0, byteArray.length)) != -1) {
|
||||
System.out.print("Data read: " + new String(byteArray, 0, bytesRead));
|
||||
totalBytesRead += bytesRead;
|
||||
}
|
||||
|
||||
System.out.println("\nBytes Read: " + totalBytesRead);
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
package com.baeldung.systemin;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.PrintStream;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
public class SystemInReadUnitTest {
|
||||
@Test
|
||||
void givenUserInput_whenUsingReadMultipleCharacters_thenRead() {
|
||||
System.setIn(new ByteArrayInputStream("Hello\n".getBytes()));
|
||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||
System.setOut(new PrintStream(outputStream));
|
||||
SystemInRead.readMultipleCharacters();
|
||||
|
||||
assertEquals("Enter characters (Press 'Enter' to quit):\n" + "Hello", outputStream.toString().trim());
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenUserInput_whenUsingReadSingleCharacter_thenRead() {
|
||||
System.setIn(new ByteArrayInputStream("A".getBytes()));
|
||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||
System.setOut(new PrintStream(outputStream));
|
||||
SystemInRead.readSingleCharacter();
|
||||
|
||||
assertEquals("Enter a character:\nA", outputStream.toString().trim());
|
||||
}
|
||||
|
||||
@Test
|
||||
void givenUserInput_whenUsingReadWithParameters_thenRead() {
|
||||
System.setIn(new ByteArrayInputStream("ABC".getBytes()));
|
||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||
System.setOut(new PrintStream(outputStream));
|
||||
SystemInRead.readWithParameters();
|
||||
|
||||
assertEquals("Data read: ABC\n" + "Bytes Read: 3", outputStream.toString().trim());
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue