Java :: I/O :: 3.5 PrintStream

김병철·2022년 9월 19일
0

Java

목록 보기
14/20

3.5 PrintStream

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

PrintStream데이터를 적절한 문자로 출력하는 것이라서 문자기반 스트림의 역할을 수행한다.

JDK 1.1부터는 더 향상된 PrintWriter가 추가되었다.
가능하면 PrintWriter를 사용하자

하지만 전까지 빈번히 사용되던 System.outPrintStream이라서 둘 다 사용할 수밖에 없다.


# PrintStream의 생성자와 메서드

  • PrintStream(File file)

  • PrintStream(File file, String scn)

  • PrintStream(OutputStream out)

  • PrintStream(OutputStream out, boolean autoFlush)

  • PrintStream(OutputStream out, boolean autoFlush, String encoding)

  • PrintStream(String fileName)

  • PrintStream(String fileName, String csn)
    -> 지정된 출력스트림을 기반으로 하는 PrintStream 인스턴스를 생성한다. autoFlush의 값을 true로 하면 println메서드가 호출되거나 개행문자가 출력될 때 자동으로 flush된다. 기본값은 false이다.

  • boolean checkError()
    -> 스트림을 flush하고 에러가 발생했는지 알려준다.

  • void print(boolean b) / void println(boolean b)

  • void print(char c) / void println(char c)

  • void print(char[] c) / void println(char[] c)

  • void print(double d) / void println(double d)

  • void print(float f) / void println(float f)

  • void print(int i) / void println(int i)

  • void print(long l) / void println(long l)

  • void print(Object o) / void println(Object o)

  • void print(String s) / void println(String s)
    -> 인자로 주어진 값을 출력소스에 문자로 출력한다. println메서드는 출력 후 줄바꿈을 하고, print메서드는 줄을 바꾸지 않는다.

  • void println()
    -> 줄바꿈 문자(line separator)를 출력함으로써 줄을 바꾼다.

  • PrintStream printf(String format, Object... args)
    -> 정형화된(formatted) 출력을 가능케 한다.

  • protected void setError()
    -> 작업 중에 오류가 발생했음을 알린다.
    (setError()를 호출한 후에, checkError()를 호출하면 true를 반환한다.)

print()나 println() 실행 중 PrintStream의 기반스트림에서 IOException이 발생하면 checkError()를 통해 인지할 수 있다.


# printf 예제

import java.util.Date;
public class Ex15_15 {

	public static void main(String[] args) {
		int i = 65;
		float f = 1234.56789f;
		
		Date d = new Date();
		
		System.out.printf("문자 %c의 코드는 %d%n", i, i);
		System.out.printf("%d는 8진수로 %o, 16진수로 %x%n", i, i, i);
		System.out.printf("%3d%3d%3d\n\n", 100, 90, 80);
		
		System.out.printf("123456789012345678901234567890%n");
		System.out.printf("%s%-5s%5s%n%n", "123", "123", "123");
		
		System.out.printf("오늘은 %tY년 %tm월 %td일 입니다. %n", d, d, d);
		System.out.printf("지금은 %tH시 %tM분 %tS초 입니다. %n", d, d, d);
		System.out.printf("지금은 %1$tH시 %1$tM분 %1$tS초 입니다. %n", d);
	}
}
  • 출력 결과 :
문자 A의 코드는 65
65는 8진수로 101, 16진수로 41
100 90 80

123456789012345678901234567890
123123    123

오늘은 2022년 09월 19일 입니다. 
지금은 11시 14분 27초 입니다. 
지금은 11시 14분 27초 입니다. 

매개변수의 수를 확인하며 주의깊게 봐야 한다!
맨 마지막 두 문장은 같은 내용이지만 매개변수의 수가 다르다.
숫자$ 는 매개변수를 지정할 수 있다.
예를 들어 1$ 는 첫번째 매개변수를 의미한다.

profile
keep going on~

0개의 댓글