[Java] java PrintWriter 출력 스트림에 대하여 알아보기.

2021-03-22


- 정의

 

PrintWriter는 개체의 형식화된 표현을 텍스트 출력 스트림에 출력한다. 이 클래스는 PrintStream에 있는 모든 출력 메서드를 구현한다. 프로그램이 인코딩 되지 않은 바이트 스트림을 사용해야 하는 원시 바이트를 작성하는 메서드는 포함되어 있지 않다. ( 출처 자바 api )

 

PrintWriter는 writer를 상속받아 사용한다. 때문에 writer 대비 다양한 출력방식을 제공하게 된다. 구체적으로 어떤 메소드들을 구현하고 있는지 알아보도록 하자.


- print / println / printf

 

PrintWriter를 사용하는 가장 큰 이유중 하나인 print 관련 메서드이다. 특히 println 메서드는 자동 개행을 시켜주기 때문에 조금 더 쉬운 출력 코딩을 할 수 있게 도와준다.

 

package tPrintWriter;
import java.io.PrintWriter;

public class Main {

	public static void main(String[] args){	
		
		PrintWriter pw = new PrintWriter(System.out);
		
		String str1 = "Hello";
		
		pw.print(str1);
		pw.print(str1);
		pw.println(); // 개행
		pw.print(str1); // 개행뒤 아랫줄에 출력
		pw.println(); // 개행
		pw.printf("%.2f", Math.PI); 
		// 소숫점 둘째 자리까지 원주율 출력
		pw.flush();
        
        	pw.close;

	}

}

 

위의 코드를 실행해 주면 아래와 같은 결과를 얻을 수 있다. 

 


- append

 

기존의 지정된 저장된 파일 등에 추가적인 데이터를 입력할 때 사용 하는 메서드이다. 매개 값으로는 문자 / 문자열 모두 받을 수 있다. 아래의 예는 text 파일에 간단한 문자열을 입력하고 append 추가적인 문자열을 대입하는 코드이다.

 

package tPrintWriter;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class Main {

	public static void main(String[] args){	
		
		String path = " 자신의 파일 경로를 입력 ";
		
		PrintWriter pw = null;
		try {
			pw = new PrintWriter(new FileWriter(path));
			pw.println("Hello World");
			
			pw.append('+');
			
			pw.append(" Wow!!");

			pw.flush();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
       	 	pw.close;
		
	}

}

 

코드 실행시 아래와 같은 결과가 text 파일에 저장이 된다.


- checkError

 

checkError은 boolean의 리턴 값을 가지고 있다. PrintWriter 사용간 기본 출력 스트림에서 또는 형식 변환 중에 에러가 발생할 경우 true를 리턴하는 메서드이다.

 

package tPrintWriter;
import java.io.PrintWriter;

public class Main {

	public static void main(String[] args){	
		
		PrintWriter pw = new PrintWriter(System.out);
		
		pw.println("Hello");
		pw.flush();
		
		boolean check = pw.checkError();
		System.out.println("PrintWriter 사용간 에러 발생 여부 : " + check);
	
	}

}

 

위와 같은 방법으로 사용할 수 있으며, 오류가 발생하지 않으면 아래와 같이 false의 값을 리턴한다.