반응형
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);
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);