1.IO
입출력 : 외부지원(키보드,파일, DB서버, 네트워크로 연결된 다른 PC)로 부터 자바프로그램으로 데이터를 읽어오거나
대로 외부자원에 데이터를 송출하는 것.
- > JVM에 외부자원의 데이터를 가지고와서 올려두는 것.
2.스트림(Stream) -> 흐름
: 프로그램의 데이터를 파일(외부)로 내보내야 할 때, 외부로 내보내기 위하여 반드시 외부 매체와의 단방향적인
통로를 만들어줘야 하는데 이 통로가 바로 '스트림'이다.
: 데이터가 오가는 단방향 통로이다. 즉 하나의 Stream으로 입력과 출력을 모두 해결할 수 없다.
: 입력과 출력을 허가 하기 위해서는 두 개의 Stream을 열어야 한다.
: 사용이 끝나면 반드시 Stream을 닫아줘야 한다(Close메소드) -> 시스템에게 자원을 반납한다! Colse 꼭 기억 !
-> 만약 사용이 끝난 Stream을 닫아주지 않으면 JVM이 알아서 닫아준다. 하지만 오만가지 예외상황이 발생할 수 있으니
반드시 수동으로 닫아줘야한다.
3. Stream 구분
- '바이트스트림' 과 '문자스트림'으로 구분
1) 바이트스트림: 스트림을 통해 움직이는 데이터의 크기가 1바이트
-> 자바의 문자가 2바이트이기 때문에 바이트스트림을 통해 문자데이터를 주고 받을 경우 문제가 발생할 수 있다.
2) 문자스트림: 스트림을 통해 움직이는 데이터의 크기가 2바이트
- '기반스트림'과 '보조스트림'으로 구분
1) 기반스트림: 실제적으로 데이터를 송신 송출하는 스트림
- FileInputStream/ FileOutputStream : 파일 입출력 스트림
- PipedInputStram/ PipedOutPutStream : 쓰레드간 데이터입출력에 사용
- ByteArrayInputStream/ ByteArrayOutputStream : 바이트 배열을 이용한 입출력 시스템
2) 보조스트림: 기반스트림의 기능을 추가해주는 클래스
- BufferedInputStream/ BufferedOutputStream(Byte 기반)
- BufferedReader/BufferedWriter(Char기반)
: 외부자원과 직접 데이터를 입출력하지 않고, 중간 버퍼를 사용해 속도를 향상
- ObjectInputStream/ ObjectOutputStream
: 객체를 파일 또는 네트워크로 입출력 할 수 있도록 기능을 제공(serializable 직렬화)
- InputStreamReader/ OutputStreamWriter
: 바이트기반의 스트림을 문자기반의 스트림으로 변환
ex) 엑셀(.xls), 그림파일(.jpg), 음악파일(.mp3) 등등 -> Byte단위
일반 자바파일(.java) -> char단위
'BackEnd > Java' 카테고리의 다른 글
IO_BufferedInputStream & BufferedOutputStream (0) | 2020.10.31 |
---|---|
IO_FileOutPutStream & FileInputStream (0) | 2020.10.31 |
IO _ File 클래스 (0) | 2020.10.31 |
Date와 Calendar (0) | 2020.10.29 |
패키지와 변수 (0) | 2020.09.23 |
댓글