BufferedWriter, OutputStreamWriter, getOutputStream
2021. 4. 27. 22:29
BufferedWriter, OutputStreamWriter, getOutputStream
- 이 포스팅은 카카오 로그인을 구현하던중 작성하였던
BufferedWriter bw=
new BufferedWriter(new OutputStreamWriter(con.getOutputStream(),"UTF-8"));
이 코드가 제대로 이해가 되지 않아서 하나하나 뜯어보면서 클래스를 이해해 보고자 한다.
getOutputStream
- 먼저 가장 내부에 위치한 getOutputStream이다.
- 클라이언트의 connect요청이 서버에서 accept됐다면 양쪽의 객체로부터 각각 입력스트림(inputStream)과 출력스트림(outputStream)을 얻을 수 있다.
- 즉 getOutputStream은 출력스트림을 얻는다는 의미이다.
- 그래서 보통 getOutputStream이 만들어졌다면 write() 메소드를 통해 메시지를 전송할 수 있다.
- 그러나 UTF-8로 따로 변환작업이 이뤄지지 않았다면 한글이 깨질 수 있기 때문에 UTF-8로 인코딩 하는 추가 작업이 필요하다.
OutputStreamWriter
- OutputStreamWriter는 바이트 출력 스트림에 연결되어 문자 출력 스트림인 Wrtier로 변환시키는 보조 스트림이다.
- getOutputStream을 UTF-8로 인코딩 해주기 위해 사용함
BufferedWriter
BufferedWriter는 문자 출력 스트림에 연결되어 버퍼를 제공해주는 보조 스트림이다.
프로그램에서 전송한 데이터를 내부 버퍼에 쌓아두었다가 버퍼가 꽉 차면 버퍼의 모든 데이터를 한꺼번에 보냄
하나하나 보내는게 아니라 메모리 버퍼를 통해 데이터를 고속 전송하기 때문에 실행 성능이 향상됨
다른 outputstream과 동일하게 Write()를 통해 데이터를 전송하지만 buffer에 잔여데이터가 있을 수 있으니 항상 flush를 해주어야 함
'skill > JAVA' 카테고리의 다른 글
[JAVA] 람다식 기초 (0) | 2021.05.08 |
---|---|
[JAVA] HashMap getOrDefault 사용하기 (0) | 2021.05.07 |
[JAVA] 알파벳 검증 Character.isAlphabetic() (0) | 2021.04.13 |
[Java] sacnner next(), nextline() 차이 (0) | 2021.04.12 |
[Java] 문자열을 char형 배열로 만들기 (toCharArray) (0) | 2021.04.08 |