[JAVA] 입출력 스트림 (Input/output Stream)

Jan 08, 2024
[JAVA] 입출력 스트림 (Input/output Stream)
💡
자바에서 스트림은 “바이트들의 연속적인 흐름”이라고 하네요. 스트림의 소스와 목적지를 파일과 네트워크와 입출력 장치, 객체와도 연결하면 이해하기 쉽겠네요
 
 
예제) 입력 출력 프로그램 InputStreamReader
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class StreamEx03 { public static void main(String[] args) { InputStreamReader ir = new InputStreamReader(System.in); // System.in 키보드 BufferedReader br = new BufferedReader(ir); try { String line = br.readLine(); System.out.println(line); } catch (IOException e) { throw new RuntimeException(e); } } }
notion image

flush

- 버퍼가 데이터를 목적지로 전송하고 비우는 작업
버퍼가 flush하는 방식 - 버퍼 크기 4byte, 문자열 5byte <hello>
H
E
L
L
E
L
L
O
O
L
L
O
L
O
 
Stream의 단점은 1byte씩 저장한다.
 
예제2) flush()메소드
import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStreamWriter; public class StreamEx04 { public static void main(String[] args) { BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // 모니터 try { bw.write("안녕하세요.\n"); bw.flush(); bw.write("처음만난 사람들도 안녕하세요.\n"); bw.flush(); bw.write("안녕안엲ㅇㅇ난하쎼요"); } catch (IOException e) { throw new RuntimeException(e); } } }
notion image
 
 
랩 파트가 출력되지 않았다…
 
flush()메서드를 사용한 시점까지 버퍼(buffer)에 남아있는 데이터를 출력(Output)한다.
 
 

⚠️통신에선 readLine()\n가 내려쓰기가 아니라! \n까지 데이터를 분리하여 읽는다.!

└>[Enter]와 동일한 역할
 
 

통신 방식 종류

Simplex (단방향)

- 송신자와 수신자가 각각 통신할 수 있는 방향이 정해져 있다. 보내기/받기만 가능 ex)라디오

Half Duplex (반이중)

-요청을 보내야 응답을 반환할 수 있음. 요청 후 받기. ex) 무전기, 웹사이트

Full Duplex (전이중, 양방향)

-언제든지 데이터를 보내고 받을 수 있다. 보내고 받기를 동시에 가능. ex) 실시간 대화 / 게임
 
Share article

MiracleCoding