setOut(), setErr(), setIn()
표준입출력의 대상변경, 콘솔이외의 다른 입출력대상으로 변경하는것이 가능하다.
static void setOut(PrintStream out)
static void setErr(PrintStream err)
static void setIn(InputStream in)
https://standout.tistory.com/53
`System.setOut()`, `System.setErr()`, `System.setIn()` 메서드는
일반적으로 테스트 목적이나 로깅과 같은 특수한 상황에서 사용된다.
프로그램 전체에 영향을 주므로 주의해서 사용해야한다.
`setOut(PrintStream out)`: 표준 출력 스트림의 대상을 지정된 `PrintStream`으로 변경
`setErr(PrintStream err)`: 표준 오류 출력 스트림의 대상을 지정된 `PrintStream`으로 변경
`setIn(InputStream in)`: 표준 입력 스트림의 대상을 지정된 `InputStream`으로 변경
import java.io.*;
public class StandardIOSetExample {
public static void main(String[] args) {
try {
// 기존 표준 출력을 파일에 대한 출력 스트림으로 변경
FileOutputStream fileOut = new FileOutputStream("output.txt");
PrintStream ps = new PrintStream(fileOut);
System.setOut(ps);
// 기존 표준 오류 출력을 파일에 대한 출력 스트림으로 변경
FileOutputStream fileErr = new FileOutputStream("error.txt");
PrintStream errPs = new PrintStream(fileErr);
System.setErr(errPs);
// 표준 출력에 메시지 출력
System.out.println("이 메시지는 output.txt 파일에 저장됩니다.");
// 표준 오류 출력에 오류 메시지 출력
System.err.println("이 메시지는 error.txt 파일에 저장됩니다.");
// 기존 표준 입력을 문자열 대한 입력 스트림으로 변경
String inputString = "사용자 지정 입력";
ByteArrayInputStream inputStream = new ByteArrayInputStream(inputString.getBytes());
System.setIn(inputStream);
// 사용자 지정 입력 스트림으로부터 데이터 읽기
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("사용자 지정 입력을 확인합니다: ");
String input = reader.readLine();
System.out.println("사용자 지정 입력: " + input);
} catch (IOException e) {
e.printStackTrace();
}
}
}
+ JDK1.5부터 Scanner클래스가 제공되면서 Systrem.in 으로부터 데이터를 입력받아 작업하는 것이 편리해졌다.
https://standout.tistory.com/1215
https://standout.tistory.com/146