seong
스트림(Stream) 통신 - BufferedReader,Writer 본문
스트림(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 |