- 방출
- 업데이트
- 읽기
버퍼
자바 NIO에 저장된 데이터에 대한 책임을 버퍼 (버퍼). 버퍼 배열이다. 다른 데이터 유형의 배열을 기억.
(부울 타입 제외) 데이터의 유형에 따라 대응하는 버퍼의 종류.
의 ByteBuffer (常用), CharBuffer를, ShortBuffer, IntBuffer, LongBuffer, FloatBuffer,에 Doublebuffer
버퍼 관리와 거의 동일보다도, 그들은 ()이다 버퍼 영역이 할당 가져옵니다.
데이터의 두 코어 버퍼 액세스 방법
) (입력 : 버퍼에 저장된 데이터를
() 얻기 : 데이터 버퍼를 취득
4 개 핵심 속성 버퍼
용량 : 용량이 버퍼의 최대 저장 용량은 일단 선언 변경할 수없는 나타낸다.
제한 : 제한은, 그 데이터의 버퍼 크기가 작동 될 수 나타낸다. (제한 데이터를 읽을 수없는 뒤)
위치 : 위치 데이터의 버퍼의 위치가 동작중인 나타낸다. 위치 <= 제한 <= 용량
마크 : 마크는 현재 위치의 기록 위치를 나타낸다) (단 재설정하여 마크 위치로 복원 될 수있다
데이터 버퍼를 읽기
1. 지정된 버퍼 크기를 할당
1 1024의 최대 용량
1024의 2, 경계
3, 0의 위치
1 |
버퍼의 ByteBuffer ByteBuffer.allocate = ( 1,024 ); |
2.에있어서, 상기 버퍼에 저장된 데이터에 넣어
1 1024의 최대 용량
1024의 2, 경계
3, 5 번 위치
1 |
buffer.put ( "ABCDE" .getBytes ()); |
데이터 모드 플립 방법을 읽을 3. 스위치
1 1024의 최대 용량
2/5, 제한
3, 0의 위치
1 |
buffer.flip (); |
4. GET 버퍼를 이용하여 데이터를 판독하는 방법
1 1024의 최대 용량
2/5, 제한
3, 5 번 위치
1 |
바이트 [] = 의해 새로운 바이트 [buffer.limit ()]; |
판독 데이터가 되감기를 사용하여 반복된다
1 1024의 최대 용량
2/5, 제한
3, 0의 위치
1 |
buffer.rewind (); |
6. 빈 버퍼는, 상기 버퍼 데이터를 상태 데이터 잊어, 여전히
1 1024의 최대 용량
1024의 2, 경계
3, 0의 위치
1 |
buffer.clear (); |
버퍼 마크 (마커)이 사용될
위치의 현재 위치를 표시하도록 표시 () 메소드
초기화 () 메소드는 마커 위치의 위치로 복귀
1 |
|
버퍼의 조각 방법
공통 데이터 조각에있어서 단지 하나, 또는 기존 버퍼 sliceBuffer을 수정하여 만든이 sliceBuffer 다른 버퍼에 반영 될 것이다.
1 |
ByteBuffer byteBuffer=ByteBuffer.allocate(10); |
程序运行结果
只读Buffer
我们可以随时将一个普通Buffer调用asReadOnlyBuffer方法返回一个只读Buffer,但不能将只读Buffer转换为一个读写Buffer
1 |
ByteBuffer byteBuffer=ByteBuffer.allocate(10); |
直接缓冲区和非直接缓冲区
非直接缓冲区:通过allocate() 方法分配缓冲区,将缓冲区建立在JVM的内存中。
直接缓冲区:通过allocateDirect() 方法分配直接缓冲区,将缓冲区建立在操作系统的物理内存中,可以提高效率。
非直接缓冲区
직접 버퍼
원본 : 큰 상자 NIO 버퍼 (버퍼) 데이터 저장