BufferedRead
- 입력 스트림에서 문자를 읽는 함수
- 문자나 배열, 라인들을 효율적으로 읽기 위해 문자들을 버퍼에 저장하고 (버퍼링) 읽는 방법을 취한다
- 버퍼 사이즈는 사용자가 지정할 수도 있지만 그렇지 않을 경우 기존 디폴트 사이즈가 사용됨
BufferedRead 사용법
BufferedReader 선언 후 readLine() 메소드를 이용해 데이터를 라인 단위로 읽어옴.
readLine()의 리턴 값은 String으로 고정되기에 다른 타입으로 입력을 받으려면 형 변환을 해주어야 한다.
* 예외처리 필수
BufferedReader 사용을 위해 throws IOException 이용하거나 try & catch를 활용해 예외처리를 해주어야한다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //BufferedReader선언
String s = br.readLine(); //String 문자열 받기
int i = Integer.parseInt(br.readLine()); //Int
Read한 데이터 가공
// 방법1) StringTokenizer를 이용한다.
StringTokenizer st = new StringTokenizer(br.readLine()); //StringTokenizer인자값에 입력 문자열 넣음
int a = Integer.parseInt(st.nextToken()); //첫번째 호출을 to int
int b = Integer.parseInt(st.nextToken()); //두번째 호출을 to int
// 방법2) string을 한번에 받아서 split을 이용해 배열로 변환
String s = br.readLine();
String array[] = s.split(" "); //공백마다 데이터 끊어서 배열에 넣음
BufferedWriter
- 한번에 모았다가 출력이 가능하다
- 버퍼를 정의해줬기 때문에 반드시 flush()/close()를 호출해 뒤처리를 해줘야한다
- System.out.println() 처럼 자동개행 기능이 없기 때문에 개행이 필요한 경우 \n 을 통해 따로 처리해 주어야한다.
BufferedWriter 사용법
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));//선언
String s = "abcdefg";//출력할 문자열
bw.write(s);//출력
bw.newLine(); //줄바꿈
bw.flush();//남아있는 데이터를 모두 출력시킴
bw.close();//스트림을 닫음
bw.newLine()이 줄바꿈이지만 적용이 안될때가 있어 bw.write(s +"\n")을 사용한다.
주요 Method
메서드명 |
기능 |
BufferedReader(Reader rd) |
rd에 연결되는 문자입력 버퍼스트림 생성 |
BufferedWriter(Writer wt) |
wt에 연결되는 문자출력 버퍼스트림 생성 |
int read() |
스트림으로부터 한 문자를 읽어서 int 형으로 리턴 |
int read(char[] buf) |
문자배열 buf의 크기만큼 문자를 읽어들임. 읽어들인 문자 수를 리턴 |
int read(char[] buf, int offset, int length) |
buf의 offset위치에서부터 length 길이만큼 문자를 스트림으로부터 읽어들임 |
String readLine() |
스트림으로부터 한 줄을 읽어 문자열로 리턴 |
void mark() |
현재우치를 마킹, 차 후 reset() 을 이용하여 마킹위치부터 시작함 |
void reset() |
마킹이 있으면 그 위치에서부터 다시시각, 그렇지 않으면 처음부터 다시시작 |
long skip(int n) |
n 개의 문자를 건너 뜀 |
void close() |
스트림 닫음 |
void write(int c) |
int 형으로 문자 데이터를 출력문자스트림으로 출력 |
void write(String s, int offset, int length) |
문자열 s를 offset 위치부터 length 길이만큼을 출력스트림으로 출력 |
void write(char[] buf, int offset, int length) |
문자배열 buf의 offset 위치부터 length 길이만큼을 출력스트림으로 출력 |
void newLine() |
줄바꿈 문자열 출력 |
void flush() |
남아있는 데이터를 모두 출력시킴. |