BufferedReader 와 Bufferedwriter
BufferedReader는 사용자의 입력을 받는 클래스이며 Bufferedwriter는 입력된 데이터를 출력하는 클래스이다.
쉽게 표현하자면
BufferedReader는 Scanner와 기능의 상위호환이고
Bufferedwriter는 System.out.print()의 상위호환이다.
BufferedReader와 Scanner의 차이는 링크된 글을 확인해보자
https://findthelostedhobby.tistory.com/133
또한 이들은 java.io를 import해야 사용할 수 있다.
BufferedReader의 사용
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class bufferedReaderEx {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); //선언
String s = bf.readLine(); //String
int i = Integer.parseInt(bf.readLine()); //Int
System.out.println(s+i);
}
}
bufferedReader는 line단위로 버퍼에 저장되기 때문에 readLine()합니다.
또한 bufferedReader는 예외 처리를 해주어야 하기 때문에 throws IOException을 import하였습니다.
물론 try-catch문을 활용하셔도 좋습니다.
BufferedWriter의 사용
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class bufferedWriterEx {
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); //할당된 버퍼에 값 넣어주기
String s = "abcd"; //출력할 문자열
bw.write(s+"\n"); //버퍼에 있는 값을 출력함
bw.flush(); //남아있는 데이터를 모두 출력
bw.close(); //스트림을 닫음
}
}
BufferedWriter는 버퍼에 데이터가 저장되어있기 때문에 write()를 하여 데이터가 출력되었다고 하더라도 flush(), close()를 하여 버퍼에 저장되 있는 데이터를 완전히 출력해주어야 합니다.
또한 System.out.println()와 같이 자동 개행기능이 내재되어 있지 않기 때문에 "\n"처리를 하여 개행이 필요한 경우 개행을 해줄 수 있습니다.
BufferedReader를 가공하는 방법, StringTokenizer
BufferedReader는 Line단위로 데이터 처리를 합니다. 그러나 데이터를 Line단위로만 처리하는 것은 심각한 비효율을 야기할 수 있습니다. 이 때 우리는 StringTokenizer의 nextToken()을 활용하여 해결할 수 있다.
nextToken()은 readLine()을 공백 단위로 호출할 수 있게 하는 메서드입니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class StringTokenizerEx {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()); //공백단위로 읽어드릴수 있는 라인 추가
int c = Integer.parseInt(st.nextToken()); //한줄에서 공백 단위로 읽음
int d = Integer.parseInt(st.nextToken());
System.out.println(c + " " + d);
}
}
'Back-End > Java' 카테고리의 다른 글
[ 자바 ] String, StringBuilder, StringBuffer의 차이점은 무엇일까? (0) | 2023.07.20 |
---|---|
[ 자바 ] Scanner와 BufferedReader의 차이 (0) | 2023.07.19 |
[ Java ] SOLID (객체 지향 설계)란 무엇일까?! (0) | 2022.11.22 |
[ Spring ] AOP (Aspect-Oriented Programming)란 무엇일까?! (0) | 2022.11.15 |
[ Spring ] Asciidoc란 무엇일까?! (0) | 2022.11.11 |
BufferedReader 와 Bufferedwriter
BufferedReader는 사용자의 입력을 받는 클래스이며 Bufferedwriter는 입력된 데이터를 출력하는 클래스이다.
쉽게 표현하자면
BufferedReader는 Scanner와 기능의 상위호환이고
Bufferedwriter는 System.out.print()의 상위호환이다.
BufferedReader와 Scanner의 차이는 링크된 글을 확인해보자
https://findthelostedhobby.tistory.com/133
또한 이들은 java.io를 import해야 사용할 수 있다.
BufferedReader의 사용
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class bufferedReaderEx {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); //선언
String s = bf.readLine(); //String
int i = Integer.parseInt(bf.readLine()); //Int
System.out.println(s+i);
}
}
bufferedReader는 line단위로 버퍼에 저장되기 때문에 readLine()합니다.
또한 bufferedReader는 예외 처리를 해주어야 하기 때문에 throws IOException을 import하였습니다.
물론 try-catch문을 활용하셔도 좋습니다.
BufferedWriter의 사용
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class bufferedWriterEx {
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); //할당된 버퍼에 값 넣어주기
String s = "abcd"; //출력할 문자열
bw.write(s+"\n"); //버퍼에 있는 값을 출력함
bw.flush(); //남아있는 데이터를 모두 출력
bw.close(); //스트림을 닫음
}
}
BufferedWriter는 버퍼에 데이터가 저장되어있기 때문에 write()를 하여 데이터가 출력되었다고 하더라도 flush(), close()를 하여 버퍼에 저장되 있는 데이터를 완전히 출력해주어야 합니다.
또한 System.out.println()와 같이 자동 개행기능이 내재되어 있지 않기 때문에 "\n"처리를 하여 개행이 필요한 경우 개행을 해줄 수 있습니다.
BufferedReader를 가공하는 방법, StringTokenizer
BufferedReader는 Line단위로 데이터 처리를 합니다. 그러나 데이터를 Line단위로만 처리하는 것은 심각한 비효율을 야기할 수 있습니다. 이 때 우리는 StringTokenizer의 nextToken()을 활용하여 해결할 수 있다.
nextToken()은 readLine()을 공백 단위로 호출할 수 있게 하는 메서드입니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class StringTokenizerEx {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()); //공백단위로 읽어드릴수 있는 라인 추가
int c = Integer.parseInt(st.nextToken()); //한줄에서 공백 단위로 읽음
int d = Integer.parseInt(st.nextToken());
System.out.println(c + " " + d);
}
}
'Back-End > Java' 카테고리의 다른 글
[ 자바 ] String, StringBuilder, StringBuffer의 차이점은 무엇일까? (0) | 2023.07.20 |
---|---|
[ 자바 ] Scanner와 BufferedReader의 차이 (0) | 2023.07.19 |
[ Java ] SOLID (객체 지향 설계)란 무엇일까?! (0) | 2022.11.22 |
[ Spring ] AOP (Aspect-Oriented Programming)란 무엇일까?! (0) | 2022.11.15 |
[ Spring ] Asciidoc란 무엇일까?! (0) | 2022.11.11 |