입출력스트림에 관한 전체적 내용은 이 포스팅
아까 바이트 기반 입출력 스트림인 InputStream, OutputStream을 학습했다.
여기서는 이제 '문자 입출력 스트림'을 공부해보겠다.
문자 출력 스트림: Writer
문자 입력 스트림: Reader
문자 출력 스트림 Writer
리턴타입 | 메소드 | 설명 |
void | write(int c) | 매개값으로 주어진 한 문자를 보낸다. |
void | write(char[] cbuf) | 매개값 배열의 모든 문자를 보낸다. |
void | write(char[] cbuf, int off, int len) | 매개값 배열에서 cbuf[off]부터 len개까지 문자를 보낸다. |
void | write(String str) | 매개값 문자열을 보낸다. |
void | write(String str, int off, int len) | 매개값 문자열에서 off순번부터 len개까지의 문자를 보낸다. |
void | flush() | 버퍼에 잔류하는 모든 문자를 출력 |
void | close() | 출력스트림 닫기 |
자식 클래스 : FileWriter, BufferedWriter, PrintWriter, OutputStreamWriter ...
ㅇwrite(int c) 메소드
=>매개변수 int(4byte)에서 끝 2byte(=>2개의 문자)만 출력 스트림으로 보낸다.
○예제 : 'A', 'B', 'C'가 저장된 각각의 char을 파일 C:/Temp/test7.txt로 출력해서 test7.txt의 내용으로 저장하기
(한 문자씩 출력하게 된다)
ㅇwrite(char[] cbuf) 메소드
=>매개값 char[] 배열의 모든 문자를 출력스트림으로 보낸다.
○예제 : 배열 전체 출력하기
ㅇwrite(char[] cbuf, int off, int len) 메소드
c[off]부터 len개의 문자를 출력 스트림으로 보낸다.
○예제
ㅇwrite(String str)와 write(String str, int off, int len) 메소드
Writer에는 위의 메소드가 있다 왜?!?
문자열을 조금 더 쉽게 보내려고!
문자열 전체를 출력 스트림으로 보내기, 그리고 문자열의 off순번부터해서 len개까지의 문자를 보내기 메소드다.
○예제 :
문자 입력 스트림 Reader
Reader클래스의 주요 메소드
리턴 타입 | 메소드 | 설명 |
int | read() | 1개의 문자를 읽고 리턴 |
int | read(char[] cbuf) | 읽은 문자들을 '매개값 문자 배열에 저장' -> 읽은 문자수 리턴 |
int | read(char[] cbuf, int off, int len) | len개의 문자 읽고 -> 매개값 문자배열 cbuf[off]부터 len개까지 저장 -> 읽은 문자 수 리턴 |
void | close() | 입력스트림 닫기 |
자식 클래스 : FileReader, BufferedReader, InputStreamReader ...
ㅇread() 메소드
=>입력 스트림으로부터 1개문자(2byte)읽고, int(4byte)타입으로 리턴 (=>끝 2byte에 문자 데이터가 들어있다.)
char charData = (char) read();
+더 이상 입력스트림으로부터 문자를 읽을 수 없을 경우=> read() 메소드가 -1을 리턴한다.
○예제 : C:/Temp/test7.txt에 저장한 내용을 한 문자씩 끝까지 읽기
Reader로 반복해서 한 문자씩 읽고 모니터에 출력
ㅇread(char[] cbuf) 메소드
=>문자 배열의 길이만큼 문자를 읽고 배열에 저장한다 + 읽은 문자수를 리턴
++입력스트림에서 3개의 문자가 들어왔을 때, 길이 2인 문자배열로 두번 읽어낼 수도 있다.
다음 그림과 같다. (내용: 혼공자 책 610페이지)
○예제 :
ㅇread(char[] cbuf, int off, int len)
=>아까랑 같음. 그리고 읽은 문자 수인 len을 리턴한다.
입력스트림 Reader에서 저 매개값에 쓴 것들만 배열에 저장한다.
한번에 읽어들이는 문자 수를 len을 통해 조절 가능하다는 점, 시작 인덱스를 지정 가능하다는 점.
○예제:
참고:
아까 만든 출력 스트림에서
writer.write(array, 1, 3); 했기 때문에
데이터 도착지인 test9.txt에는 BCD라고 저장되어 있었다.
입출력 스트림
바이트 기반/문자 기반 입출력 스트림
InputStream, OutputStream, Reader, Writer
학습했다.
'JAVA' 카테고리의 다른 글
[6주차] 기본미션 + 선택미션 [혼공단] [혼공자] (0) | 2020.08.16 |
---|---|
[혼자 공부하는 자바] 8/16 14-2 [보조 스트림] [문자변환] [성능향상] [기본타입입출력] [프린터] (0) | 2020.08.16 |
[혼자 공부하는 자바] 8/13 14-1 [입출력 스트림] [바이트 기반 스트림] [바이트 입출력 스트림] [InputStream] [OutputStream] (0) | 2020.08.13 |
[혼자 공부하는 자바] 8/13 13-2 [컬렉션프레임워크] [LIFO(후입선출)/Stack클래스] [FIFO(선입선출)/Queue인터페이스] (0) | 2020.08.13 |
[5주차] 기본미션 + 선택미션 [혼공단] [혼공자] (0) | 2020.08.09 |