5-2.(4) java file io (PrintStream, PrintWriter)

zhyun·2020년 9월 28일
0

HighJava

목록 보기
45/67
post-custom-banner

1.PrintStream과 PrintWriter 클래스

  • 프린터 기능 제공 보조 스트림
  • 단지 출력 클래스만 존재, 대응하는 입력 클래스는 무존재
  • 바로 출력하기 쉽도록 도와주는 메소드들을 많이 제공

2.PrintStream

  • 콘솔창에 출력하기 위해서 써왔던 System.out이 바로 PrintStream
  • 모든 자료형 출력 가능, OutputStream의 서브클래스
  • IOException을 발생시키지 않는다.
  • print(), println() 메서드가 오버로딩 되어있음
    => 메서드 호출마다 autoflush 기능 제공됨
    => 줄바꿈을 해주느냐 안해주느냐 차이만 있을뿐 기능은 無
  • PrintStream printf(String format, Object...args) :정형화된 출력가능

3.PrintWriter

  • print(), println() 메서드 사용
  • 바이트출력스트림문자출력스트림을 가지고 객체를 생성할 수 있는 클래스
  • 생성자에는 FileNotFoundException예외 발생하기 때문에 반드시 예외처리
  • PrintStream보다 다양한 언어의 문자를 처리하는데 적합

프린터 기능 제공 보조 스트림 예제

T14_PrintStreamTest

public class T14_PrintStreamTest {
	public static void main(String[] args) throws IOException{
		//1.파일목적지 세팅
		FileOutputStream fos = new FileOutputStream("c:/D_Other/print.txt");
		FileOutputStream fos2 = new FileOutputStream("c:/D_Other/print2.txt");
		
		//PrintStream은 모든 자료형을 출력할 수 있는 기능을 제공하는 OutputStream의
		//서브클래스이다. PrintStream은 IOException을 발생시키지 않는다.
		//println and print 등 메서드 호출시마다 autoflush 기능제공됨
		
		//2. 파일목적지 세팅1 (print.txt)
		PrintStream out = new PrintStream(fos); 
		//PrintStream out = new PrintStream(System.out); // 목적지를 어디두냐 따라서 출력 가능 (Console창에 출력댐)
		out.print("안녕하세요. PrintStream 입니다.\n");
		out.println("안녕하세요. PrintStream 입니다2.");
		out.println("안녕하세요. PrintStream 입니다3.");
		out.println(out);//객체 출력
		out.println(3.14);
		
		out.close();
		
		/**
		 * PrintStream은 데이터를 문자로 출력하는 기능을 수행함.(System.out)
		 * 향상된 기능의 PrintWriter가 추가되었지만 계속 사용됨.
		 * 
		 * printWriter가 PrintStream보다 다양한 언어의 문자를 처리하는데 적합하다.
		 * 둘 다 기본적으로 autoflush 기능이 꺼져 있음.
		 */
		//3.파일목적지 세팅2 (print2.txt)
		PrintWriter writer = new PrintWriter(new OutputStreamWriter(fos2, "UTF-8"));
		
		writer.print("안녕하세요. PrintWriter 입니다.\r\n");
		writer.println("안녕하세요. PrintWriter 입니다.2");
		writer.println("안녕하세요. PrintWriter 입니다.3");
		
		writer.close();
		
	}
}
profile
HI :)
post-custom-banner

0개의 댓글