관리 메뉴

어읽로꾸거

[네트워크 프로그래밍] 3. Stream - BufferedStream, DataStream, CharacterStream 본문

정리

[네트워크 프로그래밍] 3. Stream - BufferedStream, DataStream, CharacterStream

어읽로꾸거 2022. 9. 28. 20:17

Buffered Stream

BufferedInputStream(InputStream in)

BufferedInputStream(InputStream in, int bufferSize)

BufferedOutputStream(OutputStream out)

BufferedOutputStream(OutputStream out, int bufferSize)

 

default input buffer = 2048

default output buffer = 512

BufferedOutputStream

네트워크에 용이

- TCP/IP 헤더 40바이트

- 1kb를 보낼때 1바이트씩 보낼 경우 41kb를 보냄

- 1kb를 한꺼번에 보낼 경우 1.04kb를 보냄

BufferedInputStream

read() called => buf에서 가져옴

2048바이트를 최대한 가져오려고 함

1바이트만 호출해도 수백개의 바이트를 갖고오는거나 시간이 비슷함

DataStream

DataInputStream(InputStream in)

DataOutputStream(OutputStream out)

 

DataOutputStream

writeBoolean

writeByte ... writeDouble 등등

 

All data is written big-endian format(BigEndian) (왼쪽부터 2의0승 1승...)

Chars are written as two unsigned bytes

DataInputStream

readBoolean

readByte ... readDouble 등등

readFully(byte[] input, num) ...

- HTTP header를 읽을떄 좋음

CharacterStream

각각 os에서 여러 인코딩으로 글자를 저장함

이런 경우를 도와주는 스트림

Reader/Writer로 구분

자동으로 OS의 인코딩으로 바꿔줌

Writer

Abstract class 라이터(outputstream이랑 비슷해), byte대신 Char[] 혹은 String

OutputStreamWriter()

=> 자바에서 캐릭터를 받음

특정 인코딩으로 바이트 어레이로 인코딩함

i/o 스트림에 씀

OutputStreamWriter(OutpusStream out, String encoding)

=> 특정 인코딩으로 변환

=> getEncoding하면 어떤 인코딩인지 가져옴

Reader

Abstract class 리더(inputStream이랑 비슷) char[]로 가져옴

InputStreamReader()

=> InputStream을 받아옴

=> 이 바이트들을 정해진 인코딩에 따라서 변환해서 가져옴

FileReader & FileWriter

이 둘은 파일을 윈도우 기본 인코딩으로 변환한다,

BufferedReader & BufferedWriter

버퍼가 적용된 Reader & Writer