当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java java.nio.ByteBuffer用法及代码示例


ByteBuffer 保存要在 I/O 操作中使用的整数值序列。 ByteBuffer 类提供以下四类针对长缓冲区的操作:

  • 读取单个字节的绝对和相对 get 方法。
  • 写入单个字节的绝对和相对 put 方法。
  • 相对批量 put 和 get 方法,将连续的字节序列从 int 数组或其他一些字节缓冲区传输到此缓冲区,并从此缓冲区传输到数组。

短缓冲区可以通过以下方式创建:

  • allocate():这为缓冲区的内容分配空间。
  • wrap():这会将现有的长数组包装到缓冲区中。

ByteBuffer 类的大多数方法与 ByteBuffer 定义的方法直接类似。

类别声明:

public abstract class ByteBuffer

extends Buffer

implements Comparable<ByteBuffer>

CharBuffer类的方法:

方法 说明
ByteBuffer allocate() 该方法分配一个新的字节缓冲区。
ByteBuffer allocateDirect() 此方法分配一个新的直接字节缓冲区。
ByteBuffer array() 此方法返回支持此缓冲区的字节数组
ByteBuffer arrayOffset() 此方法返回缓冲区第一个元素在该缓冲区的后备数组中的偏移量。
ByteBuffer asCharBuffer() 此方法创建此字节缓冲区的视图作为字符缓冲区。
ByteBuffer asDoubleBuffer() 此方法将此字节缓冲区的视图创建为双缓冲区。
ByteBuffer asFloatBuffer() 此方法创建此字节缓冲区的视图作为浮点缓冲区。
ByteBuffer asIntBuffer() 此方法将此字节缓冲区的视图创建为 int 缓冲区。
ByteBuffer asLongBuffer() 此方法将此字节缓冲区的视图创建为长缓冲区。
ByteBuffer asReadOnlyBuffer() 此方法创建一个新的只读字节缓冲区,共享该缓冲区的内容。
ByteBuffer asShortBuffer() 此方法创建此字节缓冲区的视图作为短缓冲区。
ByteBuffer compact() 此方法压缩此缓冲区。
ByteBuffer compareTo() 此方法将此缓冲区与另一个缓冲区进行比较。
ByteBuffer duplicate() 此方法创建一个共享该缓冲区内容的新字节缓冲区。
ByteBuffer equals() 此方法告知此缓冲区是否等于另一个对象。
ByteBuffer get() 该方法是一个相对 get 方法,返回缓冲区当前位置的字节。
ByteBuffer get() 该方法是一个相对批量获取方法并返回该缓冲区。
ByteBuffer get() 此方法是相对批量获取方法并返回此缓冲区。
ByteBuffer get() 此方法是绝对 get 方法,返回给定索引处的字节。
ByteBuffer getChar() 该方法是一个相对 get 方法,用于读取 char 值并返回缓冲区当前位置的 char 值。
ByteBuffer getChar() 此方法是绝对 get 方法,用于读取 char 值并返回给定索引处的 char 值。
ByteBuffer getDouble() 该方法是一个相对 get 方法,用于读取双精度值并返回缓冲区当前位置的双精度值。
ByteBuffer getDouble() 此方法是一个绝对 get 方法,用于读取双精度值并返回给定索引处的双精度值。
ByteBuffer getFloat() 该方法是一个相对 get 方法,用于读取浮点值并返回缓冲区当前位置的浮点值。
ByteBuffer getFloat() 此方法是一个绝对 get 方法,用于读取浮点值并返回给定索引处的浮点值。
ByteBuffer getInt() 此方法是一个相对 get 方法,用于读取 int 值并返回缓冲区当前位置的 int 值。
ByteBuffer getInt() 此方法是绝对获取方法,用于读取 int 值并返回给定索引处的 int 值。
ByteBuffer getLong() 该方法是一个相对 get 方法,用于读取 long 值并返回缓冲区当前位置的 long 值。
ByteBuffer getLong() 此方法是用于读取 long 值的绝对 get 方法,并返回给定索引处的 int 值。
ByteBuffer getShort() 该方法是一个相对 get 方法,用于读取短值并返回缓冲区当前位置的long值。
ByteBuffer getShort() 此方法是用于读取短值的绝对 get 方法,并返回给定索引处的 int 值。
ByteBuffer hasArray() 此方法告知此缓冲区是否由可访问的字节数组支持。
ByteBuffer hashCode() 该方法返回该缓冲区的当前哈希码。
ByteBuffer isDirect() 这个方法告诉我们这个字节缓冲区是否是直接的。
ByteBuffer order() 该方法检索该缓冲区的字节顺序。
ByteBuffer order() 此方法修改此缓冲区的字节顺序。
ByteBuffer put()方法 此方法是相对放置方法并返回此缓冲区。
ByteBuffer put()方法 此方法是相对批量放置方法并返回此缓冲区。
ByteBuffer put()方法 此方法是相对批量放置方法并返回此缓冲区。
ByteBuffer put()方法 此方法是绝对放置方法并返回此缓冲区。
ByteBuffer putChar() 该方法是用于写入 char 值的相对 put 方法。
ByteBuffer putChar() 该方法是写入 char 值的绝对 put 方法。
ByteBuffer putDouble() 该方法是用于写入双精度值的相对 put 方法。
ByteBuffer putDouble() 该方法是用于写入双精度值的绝对 put 方法。
ByteBuffer putFloat() 该方法是用于写入浮点值的相对 put 方法。
ByteBuffer putFloat() 该方法是用于写入浮点值的绝对 put 方法。
ByteBuffer putInt() 此方法是用于写入int值的相对放置方法。
ByteBuffer putInt() 该方法是写入int值的绝对put方法。
ByteBuffer putLong() 该方法是写入 long 值的绝对 put 方法。
ByteBuffer putLong() 该方法是用于写入long值的相对 put 方法。
ByteBuffer putShort() 该方法是写入短值的绝对 put 方法。
ByteBuffer putShort() 该方法是一种用于写入短值的相对 put 方法。
ByteBuffer slice() 此方法创建一个新的字节缓冲区,其内容是该缓冲区内容的共享子序列。
ByteBuffer toString() 此方法返回一个总结该缓冲区状态的字符串。
ByteBuffer wrap() 此方法将字节数组包装到缓冲区中。
ByteBuffer wrap() 此方法将字节数组包装到缓冲区中。

以下是一些演示CharBuffer类及其方法的程序:

示例 1:

Java


// Java program to demonstrate 
// ByteBuffer class 
  
import java.nio.*; 
import java.util.*; 
  
public class GFG { 
  
    public static void main(String[] args) 
    { 
  
        // Declaring the capacity of the ByteBuffer 
        int capacity = 4; 
  
        // Creating the ByteBuffer 
        try { 
  
            // creating object of ByteBuffer 
            // and allocating size capacity 
            ByteBuffer bb = ByteBuffer.allocate(capacity); 
  
            // putting the int to byte typecast value 
            // in ByteBuffer using putInt() method 
            bb.put((byte)10); 
            bb.put((byte)20); 
            bb.put((byte)30); 
            bb.put((byte)40); 
            bb.rewind(); 
  
            // print the ByteBuffer 
            System.out.println( 
                "Original ByteBuffer: "
                + Arrays.toString(bb.array())); 
        } 
  
        catch (IllegalArgumentException e) { 
  
            System.out.println( 
                "IllegalArgumentException catched"); 
        } 
  
        catch (ReadOnlyBufferException e) { 
  
            System.out.println( 
                "ReadOnlyBufferException catched"); 
        } 
    } 
}
输出
Original ByteBuffer: [10, 20, 30, 40]

示例 2:

Java


// Java program to demonstrate 
// ByteBuffer class 
  
import java.nio.*; 
import java.util.*; 
  
public class GFG { 
  
    public static void main(String[] args) 
    { 
  
        // Declaring the capacity of the ByteBuffer 
        int capacity = 50; 
  
        // Creating the ByteBuffer 
        try { 
  
            // creating object of ByteBuffer 
            // and allocating size capacity 
            ByteBuffer bb = ByteBuffer.allocate(capacity); 
  
            // changeing bytebuffer view as char buffer 
            // and putting a string value 
            bb.asCharBuffer().put("GeeksForGeeks"); 
  
            // Declaring char variable c 
            char c; 
  
            // print the ByteBuffer 
            System.out.print("Char buffer : "); 
            while ((c = bb.getChar()) != 0) 
                System.out.print(c + " "); 
            System.out.println(); 
        } 
  
        catch (IllegalArgumentException e) { 
  
            System.out.println("Exception thrown : " + e); 
        } 
  
        catch (ReadOnlyBufferException e) { 
  
            System.out.println("Exception thrown : " + e); 
        } 
    } 
}
输出
Char buffer : G e e k s F o r G e e k s 


相关用法


注:本文由纯净天空筛选整理自mank1083大神的英文原创作品 java.nio.ByteBuffer Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。