티스토리 뷰

Java

Java File IO

IT공부블로그 2019. 4. 11. 19:53
728x90
반응형



파일

->        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를 통해 한줄씩 리퀘스트





728x90
반응형

'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
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함