當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。