본문 바로가기

프로그램/java

ByteBuffer

반응형
ByteBuffer

Java NIO에서 사용하기 위한 자료형 이라 판단됨

자바 기본자료형에대 boolean 을 제외하고 존재함
보통 파일 입출력이나 소켓 전송으르 위해서는
ByteBuffer을 사용할 거라 생각됨

ByteBuffer.allocate
혹은
ByteBuffer.allocateDirect 를 통해 객체를 얻어옴

allocate 는 기존 자바 힙 에 객체 저장
allocateDirect 는 OS의 메모리 영역에 저장

좀더 빠른 속도를 위해 allocateDirect를 사용할 것을 권장.

capacity 가 정해지면 크기를 변경할 수 없음

get
put : position이 이동됨
clear : data삭제 안됨. limit, position 을 초기화함
rewind : position을 0으로 , mark제거, put으로 설정 한 값을 모두 취소하고 다시 설정하고자 할 경우
flip : limit를 현재 position으로 변경, position을 0 으로 변경, put한 것을 처음부터 읽고자 할 경우 사용
hasRemaining : 버터의 position, limit사이에 데이터 존재 여부 반환

사용 예
        RandomAccessFile raf = new RandomAccessFile("addfile/test.txt", "rw");
       
        FileChannel fc = raf.getChannel();
       
        String message = "안녕하세요..";
       
        ByteBuffer byteBuf1 = ByteBuffer.allocate(message.getBytes().length);
       
        byteBuf1.put(message.getBytes());
       
        // limit를 현재 position
        // position 을 0 으로 setting
        byteBuf1.flip();
       
        fc.write(byteBuf1);