JAVA/포스팅

자바 표준입출력 setIn()

짜집퍼박사(짜박) 2023. 11. 26. 20:23

자바의 System 클래스에는 setIn 메서드가 있습니다. 이 메서드는 표준 입력 스트림(System.in)을 변경하는 데 사용됩니다. 따라서 이 메서드를 사용하면 표준 입력이 다른 입력 스트림으로 바뀝니다.

메서드 시그니처는 다음과 같습니다.

public static void setIn(InputStream in);

여기서 in은 새로운 표준 입력 스트림을 나타냅니다. 이를 통해 표준 입력을 다른 소스로 변경할 수 있습니다.

예를 들어, 파일로부터의 입력 스트림으로 표준 입력을 변경하는 예제는 다음과 같습니다.

import java.io.*;

public class RedirectSystemIn {
    public static void main(String[] args) {
        // 현재의 표준 입력(System.in)을 보관
        InputStream originalIn = System.in;

        try {
            // 파일로부터의 입력 스트림 생성
            InputStream fileInput = new FileInputStream("input.txt");

            // 표준 입력을 파일 입력으로 변경
            System.setIn(fileInput);

            // 변경된 표준 입력에서 데이터 읽기
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            String line = reader.readLine();
            System.out.println("Read from file: " + line);

            // 기존의 표준 입력으로 복원
            System.setIn(originalIn);

            // 원래의 표준 입력에서 데이터 읽기
            BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));
            String consoleLine = consoleReader.readLine();
            System.out.println("Read from console: " + consoleLine);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

이 예제에서는 표준 입력을 input.txt 파일로 변경한 후, 파일에서 데이터를 읽어옵니다. 그리고 다시 원래의 표준 입력으로 복원하여 콘솔에서 데이터를 읽어옵니다. 변경된 표준 입력으로부터 읽은 데이터는 파일의 내용이며, 원래의 표준 입력으로부터 읽은 데이터는 사용자가 콘솔에 입력한 내용입니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 File  (0) 2023.11.26
자바 RandomAccessFile  (0) 2023.11.26
자바 표준입출력 setErr()  (0) 2023.11.26
자바 표준입출력 setOut()  (0) 2023.11.26
자바 System.err  (0) 2023.11.26