Programming/Back-end Language

[JAVA] BufferedReader와 StringTokenizer 사용법

산랑이 2022. 5. 9.

BufferedReader란?

JAVA에서 입력방식은 Scanner와 BufferedReader가 있다. Scanner를 통해 입력을 받을경우 Space Enter를 모두 경계로 인식하기에 입력받은 데이터를 가공하기 매우 편리하다. 하지만 BufferedReader는 Enter만 경계로 인식하고 받은 데이터는 String으로 입력을 받기 때문에 가공을 해야하는 작업이 필요하다. 하지만 작업속도 차이가 많이 나기 때문에 BufferedReader를 이용하여 입력 받는 것이 훨씬 효율적이다. 

 

BufferedReader사용법

 public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String str = br.readLine(); 

int num = Integer.parseInt(br.readLine()); // readLine으로 받은 입력 데이터는 String이다. 파싱필요
}

주의해야 하는 점은 입력받은 데이터는 String 이므로 int형은 파싱이 필요하다.  또한 예외처리이다. IOException 예외 처리를 반드시 해야한다. 

 

주요 메소드

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()   남아있는 데이터를 모두 출력시킴.

StringTokenizer란?

String : 문자열을  Tokenizer : 토큰화한다.

-> 하나의 문자열을 여러 개의 토큰으로 분리하는 클래스이다.

 

StringTokenizer사용법

public static void main(String[] args) throws IOException {
 String test ="안녕? 나는 토 큰 토 큰";
StringTokenizer tokenTest = new StringTokenizer(test);

//for문으로 모든 값 출력 
 int count = tokenTest.countTokens();
  for(int i=0; i<count; i++){
            System.out.println(i+"   "+tokenTest.nextToken());

        }

//while문으로 모든 값 출력
while(tokenTest.hasMoreTokens()){
   System.out.println(tokenTest.nextToken());
        }

}

주요 메소드

리턴값 메서드명 역할
boolean hasMoreTokens() 남아있는 토큰이 있으면 true를 리턴, 더 이상 토큰이 없으면 false 리턴
String nextToken() 객체에서 다음 토큰을 반환
String nextToken(String delim) delim 기준으로 다음 토큰을 반환
boolean hasMoreElements() hasMoreToken와 동일한대 엘레먼트보다 토큰으로 된 메서드를 주로 씀
Object nextElement() nextToken 메서드와 동일하지만 문자열이 아닌 객체를 리턴
int countToken() 총 토큰의 개수를 리턴

 

 

 

댓글