-상식-
\n(Line feed 일명 LF) 다음줄의 처음으로 줄바꿈 함 (os별로 처음으로 가지 않는 경우도 있긴함)
\r(Carriage return 일명 CR) 커서를 그 줄의 맨 앞으로 이동시킴
-CASE 1 입력값이 방대할 경우-
입력값이 방대할 경우엔 Scanner 객체는 느리다.
따라서 비교적 빠르며 BufferedReader 객체를 사용한다.
키보드같은 외부입력장치와의 통신은 연결시마다 높은 비용이 발생한다.
BufferedReader 는 키보드 같은 입력장치와의 통신을 보통 한번만 거치기 때문에 ,
입력이 있을때 마다 입력장치와의 통신을 거치는 Scanner 보다 훨씬 빠르다.
-객체 생성
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
-메소드
reader.read();
//스트림에서 한글자씩 문자로 읽는다. 반환값은 양의 정수(아스키값)이다.
//stream의 끝에 도달하였다면 -1을 반환한다.
reader.readLine();
//스트림 으로부터 텍스트 한 줄씩 읽습니다.
//한 줄은 줄 바꿈 ( '\n'), 캐리지 리턴 ( '\r') 또는 ("\r\n") 이 3개 중 하나라도 나오면 끝나는 것으로 간주됨.
//리턴 값은 읽은 한줄.
줄 종료문자(윗 3가지) 를 포함하지 않고 스트림이 꽉 찬 경우 null을 반환함
하단의 글은 예시이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class TestMethod {
public static void main(String[] args) {
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
String string="";
try {
while(!"q".equalsIgnoreCase(string)) {
string=reader.readLine();
System.out.println(string+" 헷 ");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
|
cs |
하단은 콘솔입력과 출력의 결과이다.
-CASE 2 문자열을 토큰으로 구별해야할 경우-
String[] line = bf.readLine().split(" "); 처럼 split을 이용하여 쪼갤수도 있으나,
StringTokenizer 객체를 이용하면 더 간단한 관리가 되는 듯 하다.
-객체생성
StringTokenizer st = new StringTokenizer(문자열, " "); // 둘째 인자는 구분자
-메소드이용
|
while(st.hasMoreTokens()){
~
System.out.println(st.nextToken());
~
}
|
cs |
st.hasMoreTokens() //이 메서드가 true를 반환하면 nextToken() 후속 호출이 성공적으로 토큰을 반환합니다.
공식처럼 st.hasMoreTokens()와 nextToken() 가 함께 이용된다.
nextToken() 의 반환형은 String.
하단은 샘플이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class TestMethod {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String line = bf.readLine();
System.out.println("line : "+line);//안 녕 하세요!
StringTokenizer st = new StringTokenizer(line, " ");
System.out.println("st : "+st);//st 주소 출력
while(st.hasMoreTokens())
System.out.println(st.nextToken());
System.out.println("끝");
}
}
|
cs |
콘솔 입력 출력 결과 이미지
-CASE 3 문자열의 끝 부분에 삽입,삭제가 일어날 경우-
-CASE 4 출력값이 많을 경우-
BuildWriter 적용
참고 : JAVA 8 공식문서
스트림, 버퍼 의 개념 : https://real-dongsoo7.tistory.com/70
BufferedReader : https://ict-nroo.tistory.com/61