JAVA/JAVA_2

Chap04-03_입출력 사용 예시 보조(filter)스트림(BufferReader, BufferWriter)

RoarinGom 2021. 2. 5. 10:01

보조(or filter) Stream의 경우 단독으로 쓰일 수 없어서 노드 stream과 같이 쓰인다 

(filterStream 쓰는 이유 기능 성능 향상시켜주기때문에)

 

InputStream in=System.in;

InputStreamReader isr=new InputStreamReader(in);

BufferedReader br=new BufferedReader(isr);

원래 이런과정 but→ 한줄로 표현 할 것이다

br=new BufferedReader(new InputStreamReader(System.in)); bw=new BufferedWriter(new FileWriter("output.txt"));


예시1)

(while(str=br.readLine())!=null) 입력하다가 입력이 null일 때 이므로 CTRL Z 누르면 입력이 안된 null로 그래서 while문 끝난다. NodeStream 리소스 젤앞에 붙어있는 stream 바로 연결해서 사용할 수 있다 FilterStream 리소스에 바로 붙을 수는 없고 노드가 리소스에 붙어있으면 쓸 수 있다)

package javaBasic_2.class06.api_입출력IO;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.InputStreamReader;

public class BufferTest01 {

	public static void main(String[] args) {
		// Scanner  객체 사용하지말고 입출력 Stream 을 이용해서 구현해보자
		// System.in (키보드로 부터 입력 받아서) :InputStream을 리턴 받아옴
		//InputStream(Byte)=>InputStreamReader(문자) 바이트 stream이 문자 stream으로
		//=> BufferedReader (InputStreamReader에다가 한 줄씩 한줄 씩 읽어준다)
		//입력하다가 그만하고 싶으면 ctrl z 눌러주면된다. (CTRL Z는 더이상 입력안하는 null과 같다)
//		<원래 과정===>
//		InputStream in=System.in;
//		InputStreamReader isr=new InputStreamReader(in);
//		BufferedReader br=new BufferedReader(isr);
		BufferedReader br=null;  //출력스트림
		BufferedWriter bw=null; //입력스트림
		String str="";
		try {
			br=new BufferedReader(new InputStreamReader(System.in));
			bw=new BufferedWriter(new FileWriter("output.txt"));
			System.out.println("입력:");
			while((str=br.readLine())!=null) {
				str+="\n";
				bw.write(str);
			}
		} catch (Exception e) {
		e.printStackTrace();
		}finally {
			try {
				bw.close();
				br.close();
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
		
	}

}