스트림의 종류에는 입력스트림, 출력스트림이 있다.
스트림에는 데이터가 흘러간다.
내가 코딩하는 프로그램이 있고, 내가 입력/출력 수행하는 부분이 있다.
이 때, 내가 만드는 프로그램을 기준으로
프로그램 밖에서 -> 프로그램 안으로 데이터가 흘러 들어오는 흐름이 입력스트림.
문자를 포함한 모든 입출력에 대한 수행 가능.
이미지, 멀티미디어, 문자 등 모든 종류의 데이터 받고 보내는 것 가능.
문자(=텍스트파일)만 받고 보낼 수 있도록 특화.
파일의 종류
- Binary File (비 문자 기반 파일)
이미지 파일, 동영상 파일, 실행 파일, 데이터 파일- 텍스트 파일 (문자 기반 파일)
.txt , .csv, .tsv, ... 등 편집기로 열었을 때, 그 파일의 내용을 사람이 인식할 수 있는 파일
운영체제마다 Enter Key룰 처리하는 방식이 다름.
1. Windows
엔터키를 누를 때, 2개의 키코드값을 생성.
LF > CR
(따라서 2byte 추가 발생)
2. Mac/Linux/UNIX
LF만 발생 (하지만 효과는 CR > LF와 동일하다)
Line-feed(LF)
라인만 다음줄로 바꾸고, 커서 위치는 그대로.
Carriage-return(CR)
라인 다음줄로 바꾸고, 커서 위치는 제일 앞으로 이동.
바이트 기반 입출력 스트림의 최상위 클래스인 InputStream / OutputStream 은 추상 클래스이다.
->> 따라서 new연산자 사용 불가.
객체 생성은 InputStream을 구현한 Concreate class에서 해야 함. (FileInputStream, BufferInputStream, DataInputStream)