쌍용 강북 교육센터 국비학원 Day 22일차
Stream
Stream 이란 프로그램은 외부에서 데이터를 읽거나 외부로 데이터를 출력하는 작업이 빈번하게 일어난다. 이때 데이터는 어떠한 통로를 통해서 데이터가 이동되는데, 이 통로를 Stream 이라고 한다.
자바에는 이러한 기능을 수행하기 위해 InputStream와 OutputStream이 존재하며 단일 방향으로 연속적으로 흘러간다.
InputStream과 OutputStream은 추상 클래스이며 추상 메소드를 오버라이딩해서 다양한 역할을 수행할 수 있다.
(예 : 파일, 네트워크, 메모리 입출력)
자바에서 기본적으로 제공하는 I/O 기능은 java.io 패키지에서 제공된다.
InputStream은 외부에서 데이터를 읽는 역할을 수행하고, OutputStream은 외부로 데이터를 출력하는 역할을 수행한다.
InputStream
바이트 기반 입력 스트림의 최상위 추상클래스이다. (모든 바이트 기반 입력 스트림은 이 클래스를 상속받는다)
파일 데이터를 읽거나 네트워크 소켓을 통해 데이터를 읽거나 키보드에서 입력한 데이터를 읽을 때 사용한다.
InputStream은 읽기에 대한 다양한 추상 메소드가 존재하고 추상메소드를 오버라이딩하여 목적에 따라 데이터를 입력 받을 수 있다.
OutputStream
바이트 기반 출력 스트림의 최상위 추상클래스이다. 모든 바이트 기반 출력 스트림 클래스는 이 클래스를 상속 받아 기능을 재정의 한다.
FileReader, FileWriter
FileReader 클래스는 문자 기반 스트림 객체이다. 텍스트파일을 자바 프로그램으로 읽어올 때 사용한다. 문자단위로 데이터를 읽기 때문에 텍스트 파일만 읽을 수 있다.
FlieWriter 클래스 FileReader 클래스와 마찬가지로 문자 기반 스트림 객체이다. 텍스트 파일에 문자열 데이터를 쓰기위해서 사용한다. 마찬가지로 문자 데이터만 쓰기 때문에 텍스트 파일만 저장할 수 있다
파일 경로에 해당하는 파일이 이미 존재하는 경우라면 그 파일을 덮어쓰게 된다. 따라서 파일에 존재하던 기존 데이터들은 사라진다. 만약 덮어쓰지 않고 파일을 뒤쪽에 붙여쓰고 싶다면 마찬가지로 FileWriter 의 생성자의 두번째 인자로 true 값을 주면 된다.
BufferedReader, BufferedWriter
Buffer (버퍼) - 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 임시 메모리 영역 (입출력 속도 향상을 위해 사용)
Buffer flush (버퍼 플러쉬) - 버퍼에 남아있는 데이터를 출력시킴. (버퍼를 비우는 동작)
하드뿐만 아니라 키보드나 모니터와 같은 외부 장치와의 데이터 입출력은 생각보다 시간이 걸리는 작업이다. 버퍼링 없이 키보드가 눌릴때마다 눌린 문자의 정보를 목적지로 바로 이동시키는 것보다 중간에 메모리 버퍼를 둬서 데이터를 한곳에 묶어서 이동시키는것이 보다 빠르고 효율적이다. 예를들면, 흙을 옮길때 삽질을 한번씩 해서 옮기는 것보다 수레에 담아 한번에 옮기는 것이 효율적인 것처럼 말이다.
BufferedReader를 사용하면, buffer를 사용하기 때문에 FileReader보다 좀 더 효율적으로 파일을 읽어올 수 있다.
public BufferedReader(Reader in)
public BufferedReader(Reader in, int size)
첫 번째 파라미터 Reader 객체를 전달합니다. 앞에서 살펴보았던, FileReader를 전달할 수도 있고,
InputStreamReader 등의 다른 Reader 객체를 전달할 수도 있습니다.
두 번째 파라미터에는 buffer 사이즈를 지정할 수 있습니다. 파라미터로 입력되는 단위는 byte입니다.
BufferedReader의 기본 buffer 사이즈는 8KB입니다. BufferedWriter 도 동일하다
더 자세한 내용은 이쪽으로 https://sikcoding.tistory.com/43
Scanner 와 BufferedReader / BufferedWriter 차이점 그리고 StringBuilder에 대해서
Scanner 와 BufferedReader / BufferedWriter 의 차이점 그리고 StringBuilder에 대해서 BufferedReader / BufferedWriter BufferedReader와 BufferdWriter는 버퍼를 사용하여 읽기와 쓰기를 하는 함수이다. 버퍼를 사용하지 않는
sikcoding.tistory.com
교육과정에서 자바 기초의 내용은 여기까지 이고 다음부터는 DB에 대해서 알아본다.