소켓프로그래밍을 하거나 파일입출력을 할때
자바가 제공하는 스트림을 사용한다.
(InputStream , OutputStream)
하지만 Byre 단위라서 영어나 숫자등은 잘 출력되는데,
단위가 2바이트인 한글은 깨져서 출력된다.
그래서 char 단위인 InputStreamReader를 쓴다.
해당 클래스를 쓰면 한글도 잘 출력되지만, 한글자씩 받아와야 하는
상황이 아니면 버퍼에 저장하여 한꺼번에 받는 방식을 많이 사용한다.
아래와 같이 코딩한다.
InputStream is = // inputStream 초기화는 상황마다 틀리므로, 초기화됬다 가정한다.
String temp;
BufferedReader buffer = new BufferReader(new InputStreamReader(is,"UTF-8");
while((temp = buffer.readLine() ) != null){
//........
}
윗 코딩 처럼 사용할때, 주의 할점이 readLine()은 개행문자가 포함되어야 내부 blocking이 풀리면서 wihle문이 실행한다는 것이다.
다시 말하자면,
BufferReader의 readLine() 를 쓸때는 inputStream 이 반드시 개행문자가 포함되어야 한다. 자바에서의 개행문자는 "\n" 이지만,
스트림에서의 개행문자는 "\r\n"이 개행문자이다.
따라서, 보내는쪽의 데이터 뒤에 "\r\n"을 반드시 붙여야한다.
ex )
String tempData = "아야어여오유";
Byte[] bytes = (tempData+"\r\n").getBytes();
'Java' 카테고리의 다른 글
JAVA - Casting(캐스팅) (0) | 2016.05.26 |
---|---|
JAVA - ArrayList에서 배열로, 배열에서 ArrayList로 (2) | 2016.04.25 |
Java foreach문(향상된 for문) (0) | 2016.03.30 |
JAVA Static이란? (2) | 2016.03.29 |
자바 enum 열거형 (0) | 2016.01.27 |
포스팅이 도움 되셨다면, 커피 한잔 후원해주세요!
더 좋은 포스팅 작성에 큰 힘이 됩니다.