seong

스트림(Stream) 통신 - BufferedReader,Writer 본문

자바/자바 실습

스트림(Stream) 통신 - BufferedReader,Writer

hyeonseong 2022. 8. 22. 11:51

스트림(Stream)이란?

  • 순서가 있는 데이터의 연속적인 흐름을 의미한다.
  • 스트림은 데이터가 생성되는 소스(source) 와 데이터를 소비하는 목적지(destination)를 가지고 있다. 

InputStream 

데이터를 바이트 단위로 받아와 출력.

문자를 입력 받아 int형태로 number에 저장

number을 출력

문자 하나이기 때문에 문자 하나만 읽어온 후 통신을 종료.

 

단점 

hello를 보내면 h만 보내는 단점이 있다.

InputStream in = System.in;
		try {
			int number = in.read(); // 현재 코드에선 while로 키보드 입력을 기다리고있다.
            // 스트림은 데이터를 하나씩 끊어서 들어온다. 
            // char은 문자 하나만 가능 -> A하나만 입력 
			System.out.println((char)number); // 다운 캐스팅
		} catch (Exception e) {
			e.printStackTrace();
		}

InputStream + 배열

InputStreamReader

  • 입력받은 데이터를 자동 캐스팅해 받은 형태 그대로 읽어준다.
package communication;

import java.io.InputStream;
import java.io.InputStreamReader;

public class InputEx02 {
	public void main(String[] args) {
		char[] dataArr = new char[4];
		
		try {
			InputStream in = System.in;
			InputStreamReader ir = new InputStreamReader(in);
            // ir에 저장된 데이터를 읽어 dataArr 배열에 저장
			ir.read(dataArr);
			for(int i =0 ; i < dataArr.length; i++) {
				System.out.print(dataArr[i]);
			}
		} catch (Exception e) {
			
		}
	}
}

Buffer를 이용한 통신(BufferedReadered, BufferedWriter)

Buffer란?

  • 데이터를 한곳에서 다른 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 영역이다. 

BufferedReadered

  • 버퍼로 데이터를 읽어온다.
  • readLine은 저장되어 있는 버퍼를 모두 읽어 오는 역할을 한다. 
package communication;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class InputEx03 {
	static public void main(String[] args) {
    	// BufferedReader 선언 문법
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		try {
			String s = br.readLine();
			System.out.println(s);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

BufferedWriter

  • 버퍼의 데이터를 출력한다.
  • writer는 flush가 필수이다. flush는 버퍼를 비워주는 역할을 한다. 
package communication;

import java.io.BufferedWriter;
import java.io.OutputStreamWriter;

public class OutputEx01 {

	public static void main(String[] args) {
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		try {
			bw.write("버퍼쓰기 예제");
			bw.flush(); // 버퍼를 비워준다.
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

'자바 > 자바 실습' 카테고리의 다른 글

소켓 통신(1) - 메세지를 하나만 받기  (0) 2022.08.23
URL 통신하기(naver.com 홈페이지)  (0) 2022.08.22
예외처리 Try - Catch  (0) 2022.08.19
23 다형성, 상속  (0) 2022.08.08
22 메소드 (Method)  (0) 2022.08.03