PrintStream 은 데이터를 기반스트림에 다양한 형태로 출력할 수 있는 print, println, printf 와 같은 메서드를 오버로딩하여 제공한다.

JDK1.1부터 향상된 기능의 문자기반 스트림인 PrintWriter 가 추가되었으나 기존 System.outPrintStream 이 빈번하게 사용되었기 때문에 둘 다 사용하고 있다.

PrintWriter 가 다양한 문자를 처리하는데 적합하기 때문에 PrintWriter 를 사용하는 것을 권장한다.

생성자 / 메서드 설명
PrintStream(File file) 지정된 출력스트림을 기반으로 PrintStream 생성, autoFlush의 값을 true 로 할 경우 호출하거나 개행문자 출력 시 자동으로 flush가 되며 default는 false 이다.
PrintStream(File file, String csn)
PrintStream(OutputStream out)
PrintStream(OutputStream out, boolean autoFlush)
PrintStream(File boolean autoFlush, String encoding)
PrintStream(String fileName)
PrintStream(String fileName, String csn)
boolean checkError() 스트림을 flush하고 에러가 발생했는지 알려준다.
void print(Variables...) 주어진 값을 출력소스의 문자로 출력한다.
void println(Variables...)
void println() 줄바꿈 문자를 출력한다.
PrintStream printf(String format, Object...) 정형화된 출력을 가능하게 한다.
protected void setError() 작업 중 오류가 발생했음을 알려준다. checkError() 를 출력 시 오류가 발생한 경우 true 를 반환한다.

print()println() 를 통해 출력 중 IOException 발생 시 checkError() 를 통해서도 이를 확인할 수 있다.

기본적으로 print()println() 는 빈번하게 사용되는 메서드이기 때문에 예외를 던지지 않고 내부에서 처리한다.

printf() 는 JDK 1.5부터 추가된 용법으로 C언어와 같이 형식화된 출력을 지원함으로써 더욱 출력을 쉽게 하도록 도와준다.

기본적으로 C언어와 같은 방법으로 정수, 문자열, 특수문자, 지수 및 소수를 출력한다.

날짜와 시간 출력 옵션

format 설명 결과
%tR, %tH:%tM 시분(24시간) 21:05
%tT, %tH:%tM:%tS 시분초(24시간) 21:05:33
%tD, %tm/%td/%ty 월일년 02/11/22
%tF, %tY-%tm-%td 년월일 2022-02-11

기본적으로는 메개변수의 개수와 옵션의 개수는 일치해야 하지만 옵션에 메개변수를 지정하면 개수가 일치하지 않아도 허용된다.

Date d = new Date();

System.out.println("지금은 %tH시 %tM분 %tS초입니다.", d, d, d);
System.out.println("지금은 %1$tH시 %1$tM분 %1$tS초입니다.", d);    //1$를 통해 첫번째 매개변수로 옵션을 지정