2021.11.24 TIL

crimy950·2021년 11월 23일
0

TIL

목록 보기
23/56
post-thumbnail

Stream


FileInput/OutputStream을 이용해 dat 파일의 작성, 읽기를 할 수 있다. in/out 을 설정하고 out.write 를 이용해 dat에 데이터를 작성하고 in.read 를 이용해 작성한 데이터를 읽어온다.

int 타입의 데이터를 입력하면 , 8비트의 이진수로 변환돼서 하위비트부터 write/read 된다. 그럼 아주 큰 수의 데이터를 입력하려면 어떻게 해야할까.
데이터를 8비트 4개로 나누어 보면 A / B / C / D 로 되어있을 것이다. 하위비트인 D를 먼저 write 해준 후, i를 shift를 이용해서 8비트만큼 하위비트로 밀어준다. 그리고 차례대로 B, C, D 를 밀어주며 write 해준다.

read를 할 때는, 우선 차례대로 read 를 하면 0 / 0 / 0 / D , 0/ 0 / 0 / C , 0 / 0 / 0 / B , 0 / 0 / 0 / A 와 같이 데이터를 read 할 것이다. 이를 i의 형태로 되돌리려면 write할 때와 마찬가지로,
data 를 상위비트 방향으로 shift 시켜 더해주면 된다.

ObjectOutputStream 을 이용하면 다양한 자료형의 데이터를 write/read 할 수 있다. Int,Double,String 의 각각의 데이터들을 읽고 쓴 코드다. 여기서 중요한 점은 1. 다른 Stream 활용과 마찬가지로 순서대로 읽고 써야한다. 2. 단순 read를 사용할 경우는 데이터를 모두 읽어오면 -1이 출력되지만, 자료형을 특정할 경우는 error 가 발생한다.

profile
소소

0개의 댓글