PrintStream 은 데이터를 기반스트림에 다양한 형태로 출력할 수 있는 print, println, printf 와 같은 메서드를 오버로딩하여 제공한다.
JDK1.1부터 향상된 기능의 문자기반 스트림인 PrintWriter 가 추가되었으나 기존 System.out 과 PrintStream 이 빈번하게 사용되었기 때문에 둘 다 사용하고 있다.
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$를 통해 첫번째 매개변수로 옵션을 지정