입출력 스트림의 종류
- 문자 기반 스트림은 문자 데이터를 읽고 출력할때 사용합니다.
구분 | 바이트 기반 스트림 | 문자 기반 스트림 | ||
입력 스트림 | 출력 스트림 | 입력 스트림 | 출력 스트림 | |
최상위 클래스 | InputStream | OutputStream | Reader | Writer |
하위 클래스 | XXXInputStream | XXXOutputStream | XXXReader | XXXWriter |
문차 출력 스트림: Writer
- Writer는 문자 기반 출력 스트림의 최상위 클래스로 추상 클래스 입니다.
- 모든 문자 기반 출력 스트림 클래스는 Writer 클래스를 상속받아서 만들어집니다.
- 아래는 주요 메소드들입니다.
리턴 타입 | 메소드 | 설명 |
void | write(int c) | 매개값으로 주어진 한 문자를 보냅니다. |
void | write(char[] cbuf) | 매개값으로 주어진 배열의 모든 문자를 보냅니다. |
void | write(char[] cbuf, int off, int len) | 매개값으로 주어진 배열 c[off]부터 len개까지의 문자를 보냅니다 |
void | write(String str) | 매개값으로 주어진 문자열을 보냅니다. |
void | write(String str, int off, int len) | 매개값으로 주어진 문자열에서 off순번부터 len개 까자의 문자를 보냅니다. |
void | flush() | 버퍼에 잔류하는 모든 문자를 출력합니다. |
void | close() | 출력 스트림을 닫습니다. |
write(int c) 메소드
- write(int c) 메소드는 매개 변수로 주어지는 int(4byte)에서 끝 2byte(1개의 문자)만
출력 스트림으로 보냅니다. - 매개변수가 int 타입이라고 4byte 모두를 보내는 것은 아닙니다.
package sec19.exam01;
import java.io.FileWriter;
import java.io.Writer;
public class WriteExample {
public static void main(String[] args) throws Exception {
Writer writer = new FileWriter("저장 위치/test.txt");
char a = 'A';
char b = 'B';
char c = 'C';
writer.write(a);
writer.write(b);
writer.write(c);
writer.flush();
writer.close();
}
}
write(char[] cbuf) 메소드
- 매개값으로 주어진 char[] 배열의 모든 문자를 출력 스트림으로 보냅니다.
package sec19.exam01;
import java.io.FileWriter;
import java.io.Writer;
public class WriteExample_2 {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Writer writer = new FileWriter("저장 위치/test2.txt");
char[] array = { 'A', 'B', 'C' };
//배열의 모든 문자를 출력합니다.
writer.write(array);
writer.flush();
writer.close();
}
}
write(char[] cbuf, int off, int len) 메소드
- c[off]부터 len개까지의 문자를 출력스트림으로 보냅니다.
- 아래는 배열 일부를 출력하는 코드 입니다.
package sec19.exam01;
import java.io.FileWriter;
import java.io.Writer;
public class WriteExample_3 {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Writer writer = new FileWriter("저장위치/test3.txt");
char[] array = { 'H', 'E', 'L', 'L', 'O' };
//배열 1번 인덱스부터 3개를 출력합니다.
writer.write(array, 1, 3);
writer.flush();
writer.close();
}
}
문차 입력 스트림: Reader
- Reader는 문자 기반 입력 스트림의 최상위 클래스로 추상 클래스 입니다.
- 모든 문자 기반 입력 스트림은 Reader 클래스를 상속받아서 만들어집니다.
- 아래는 주요 메소드들입니다.
리턴 타입 | 메소드 | 설명 |
int | read() | 1개의 문자를 읽고 리턴합니다. |
int | read(char[] cbuf) | 읽은 문자들을 매개값으로 주어진 문자 배열에 저장하고 읽은 문자 수를 리턴합니다. |
int | read(char[] cbuf,int off, int len) | len개의 문자를 읽고 매개값으로 주어진 문자 배열에서 cbuf[off]부터 len개까지 저장합니다 |
void | close() | 입력 스트림을 닫습니다. |
read() 메소드
- read() 메소드는 반대로 입력 스트림으로부터 1개(2byte)의 문자를 읽고 int(4byte) 타입으로 리턴합니다.
- 리턴된 4byte 중 끝에 있는 2byte에 문자 데이터가 들어 있습니다.
- 아래코드는 저장된 ELL을 한문자씩 읽는 코드 입니다.
package sec19.exam01;
import java.io.FileReader;
import java.io.Reader;
public class ReadExample {
public static void main(String[] args) throws Exception {
Reader reader = new FileReader("저장위치/test3.txt");
while(true) {
int data = reader.read();
if(data == -1) break;
System.out.println((char)data);
}
reader.close();
}
}
read(char[] cbuf, int off, int len) 메소드
- read(char[] cbuf, int off, int len) 메소드는 입력스트림으로 부터 len개의 문자 만큼 읽고
매개값으로 주어진 문자배열에서 cbuf[off] 부터 len개까지 저장합니다. - 읽은 문자수인 len개를 리턴합니다.(실제로 읽은 문자수가 len개보다 적은 경우 읽은수만큼 리턴합니다.)
package sec19.exam01;
import java.io.FileReader;
import java.io.Reader;
public class ReadExample_3 {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Reader reader = new FileReader("저장 위치/test3.txt");
char[] buffer = new char[5];
//입력 스트림으로 부터 3개의 문자를 읽고 buffer[2], buffer[3],buffer[4]에 각각 저장
int readCharNum = reader.read(buffer, 2, 3);
if(readCharNum != -1) {
for(int i=0; i<buffer.length; i++) {
System.out.println(buffer[i]);
}
}
reader.close();
}
}
'학습단 > JAVA 학습단' 카테고리의 다른 글
24. 혼공자 24일차(입출력 관련 API) (0) | 2023.08.17 |
---|---|
23. 혼공자 23일차(보조 스트림) (0) | 2023.08.16 |
21. 혼공자 21일차(입출력 스트림) (0) | 2023.08.14 |
5주차 완료 (0) | 2023.08.12 |
20. 혼공자 20일차(선입선출 ,후입선출 컬렉션) (0) | 2023.08.10 |