소켓프로그래밍을 하거나 파일입출력을 할때


자바가 제공하는 스트림을 사용한다.


(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

포스팅이 도움 되셨다면, 커피 한잔 후원해주세요!
더 좋은 포스팅 작성에 큰 힘이 됩니다.

Buy me a coffeeBuy me a coffee

+ Recent posts