오늘이라도
30. IO (Input & Output) ① 본문
https://github.com/upcake/Class_Examples
교육 중에 작성한 예제들은 깃허브에 올려두고 있습니다.
- 스트림이란 입출력되는 자료가 흘러가는 통로를 의미하며 단방향성을 가진다.
- 노드 스트림은 가장 먼저 연결되는 스트림을 뜻한다.
- InputStream / OutputStream은 바이트 스트림(1 Byte)이며 이미지, 동영상, 음악, ASCII 문자 등 파일을 전송한다.
- Enter를 입력하면 CR(Carriage Return)과 LF(Line Feed)가 입력된다.
- CR은 커서를 줄의 맨 앞으로 이동하는 것을 말하며 아스키코드로 13이다.
- LF는 커서를 한 줄 아래로 이동하는 것을 말하며 아스키코드로 10이다.
- A Enter를 입력하면 65 13 10이 입력되기 때문에 Enter를 처리해 줄 필요가 있다.
- InputStream과 while문을 사용하여 여러 글자를 입력받을 수 있다.
- 브릿지 스트림은 노드 스트림과 연결되는 스트림을 의미하며 단독으로 사용할 수 없다.
- 문자 스트림(2 Byte)은 텍스트(한글, 특수문자, 한자 등)를 유니코드로 변경해준다.
- InputStreamReader / OutputStreamWriter는 바이트 입출력 스트림을 문자 스트림으로 변경해준다.
- InputStreamReader과 while을 이용하여 한글 여러 글자를 입력받을 수 있다.
- while문의 조건문을 약간 수정하여 특정 문자가 입력되었을 때 프로그램을 종료시킬 수 있다.
- 일반적인 입출력은 여러 글자를 입력한다 하더라도 실제 처리될 때는 한 글자씩 입출력된다.
- 이 때, 입력된 글자의 개수만큼 접근이 이루어지는데 속도 저하의 원인이 된다.
- 이러한 비효율성을 개선하기 위해 입력한 글자를 한 번에 처리할 수 있는 버퍼를 지원해준다.
- 버퍼의 기본 크기는 1024byte이며 BufferedReader 클래스의 readLine() 메서드를 이용한다.
- FileInputStream / FileOutputStream으로 파일을 복사할 수 있다.
- 버퍼를 이용하여 더 빠르게 파일을 입출력할 수 있다.
- write() 메서드를 사용한 다음에는 반드시 flush() 메서드를 사용해서 미처 출력되지 못한 데이터를 출력해주어야 한다.
'취업성공패키지 SW 개발자 교육 > Java' 카테고리의 다른 글
32. IO ③ (0) | 2020.04.01 |
---|---|
31. IO ② (0) | 2020.03.31 |
29. 스레드 (0) | 2020.03.30 |
혼자 공부하는 자바, Ch 06-1 객체 지향 프로그래밍 (0) | 2020.03.26 |
28. ArrayList ② (0) | 2020.03.26 |