티스토리 뷰
파일
-> InputStream(추상, Read) -> 프로그램 -> OutputStream(추상, Write) -> 콘솔, 파일
메모리
데이터는 문자 or 바이트 단위로 흐른다
프로그램이 문자단위로 읽고쓰는지 바이트 단위로 읽고쓰는지에 따라 다르다
주 스트림 : 소스(파일)에다 직접 꽂는 스트림
보조 스트림 : 직접 못꽂고 주 스트림에 꽂는 스트림 주 스트림에 들어온것을 가공하는 필터역할
주 스트림은 다 다르지만 보조스트림은 동일하다
네트워크는 바이트단위로 읽는다
바이트 스트림 (주 스트림)
InputStream, OutputStream
ByteArrayInputStream, ByteArrayOutputStream
FileInputStream, FileOutputStream
읽는 즉시 출력하면 깨짐 스트림은 끝나면 항상 닫아줘야한다
한번 쓸때 1바이트씩 씀 100바이트면 100번
Buffered는 내부에 버퍼가있고 데이터를 쓰면 버퍼에 차곡차곡 쌓이고 다쌓이면 블록단위로 보냄
문자 스트림 ( 주 스트림 )
Reader, Writer
FileReader, FileWriter
읽는 즉시 출력해도 깨지지않음
Buddered Reader의 장점 개행문자가 들어오면 버퍼를 비우고 데이터를 전달
Java의 File IO는 데코레이터 패턴으로 구성 데코레이터 패턴처럼 런타임시 확장한다
InputStreamReader : 입력은 바이트 프로그램으로 전달은 Char
UTF-8이 아닐때 바이트에서 CHAR로 변환하기전에 UTF-8로 해야한다는걸 가르쳐줌
키보드에도 스트림이 꽂혀있다 System 클래스에 System.in, System.out
키보드 입력 : System.in -> InputStreamReader -> BufferedReader
보조 스트림의 추가 설명 : 프로그램이 할수있는일을 대신해줌, 프로그램의 로직이 좀더 간단해짐
보조스트림만 닫아주면 그 앞의것들을 전부다 닫힘
보조스트림
바이트
FilterInputStream, FilterOutputStream
BufferedInputStream, BufferedOutputStream
문자
BufferedReader, BufferedWriter
InputStreamReader, OutputStreamReader
http 헤더정보를 InputStream -> InputStreamReader -> BufferedReader를 통해 한줄씩 리퀘스트
'Java' 카테고리의 다른 글
[Java] String -> Json (0) | 2020.04.01 |
---|---|
[Java] url 인코딩, 디코딩 (0) | 2019.09.20 |
[Java] 실수 연산 하는법 (0) | 2019.07.16 |
[Java] split(".") 하는법 (0) | 2019.07.16 |
[Java] 한글을 영어로 변환하는 소스 (0) | 2019.06.16 |