欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javaNIO中關于ByteBuffer的用法

 更新時間:2023年08月21日 10:09:37   作者:15191806282  
這篇文章主要介紹了javaNIO中關于ByteBuffer的用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

javaNIO中ByteBuffer用法

ByteBuffer類是在javaNIO中常常使用的一個緩沖區(qū)類,使用ByteBuffer可以進行高效的IO操作

下來我們看一下ByteBuffer類的常用方法

ByteBuffer.allocate();或者ByteBuffer.wrap();創(chuàng)建ByteBuffer

 public static ByteBuffer allocate(int capacity) {
        if (capacity < 0)
            throw new IllegalArgumentException();
        return new HeapByteBuffer(capacity, capacity);
    }
 public static ByteBuffer wrap(byte[] array,
                                    int offset, int length)
 {
    try {
         return new HeapByteBuffer(array, offset, length);
    } catch (IllegalArgumentException x) {
            throw new IndexOutOfBoundsException();
     }
  }

讀寫的方法就read()、write(),在這之中我們看一下ByteBuffer內部字段

  • position:當前讀取的位置
  • mark:為某一讀過的位置做標記,便于有時候回退到該位置
  • capacity:初始化時候的容量
  • limit:讀寫的上限,limit <= capacity

flip()方法寫完數據需要開始讀的時候,將position復位到0,并將limit設為當前position

 public final Buffer flip() {
        limit = position;
        position = 0;
        mark = -1;
        return this;
    }

clear()方法是將position置為0,并不清除buffer內容

 public final Buffer clear() {
        position = 0;
        limit = capacity;
        mark = -1;
        return this;
    }

*mark()方法是標記,reset()方法是回到標記

 public final Buffer mark() {
        mark = position;
        return this;
    }
 public final Buffer reset() {
        int m = mark;
        if (m < 0)
            throw new InvalidMarkException();
        position = m;
        return this;
    }

下來看一個例子

public void test() throws IOException
    {
        ByteBuffer buff = ByteBuffer.allocate(256);
        FileChannel in = null;
        FileChannel out = null;
        try
        {
            in = new FileInputStream("filein").getChannel();
            out = new FileOutputStream("fileout").getChannel();
            while(fin.read(buff) != -1) {
                buff.flip();
                fout.write(buff);
                buff.clear();
            }
        }
        catch (FileNotFoundException e)
        {
            throw e;
        } finally {
            try {
                if(in != null) {
                    in.close();
                }
                if(fout != null) {
                    out.close();
                }
            } catch(IOException e) {
                throw e;
            }
        }
    }

使用isoparser包,報錯java.nio.bytebuffer.limiy(i)

問題描述

使用isoparser包,報錯java.nio.bytebuffer.limiy(i)

IsoFile isoFile = new IsoFile("文件路徑");

原因分析

我使用的是isoparser的1.9.41,某些依賴包版本太低不支持

解決方案

換成更低的版本1.9.39

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java中字符串String的+和+=及循環(huán)操作String原理詳解

    Java中字符串String的+和+=及循環(huán)操作String原理詳解

    Java編譯器在編譯時對String的+和+=操作會創(chuàng)建StringBuilder對象來進行字符串的拼接,下面這篇文章主要給大家介紹了關于Java中字符串String的+和+=及循環(huán)操作String原理的相關資料,需要的朋友可以參考下
    2023-01-01
  • Java并發(fā)編程之原子性-Atomic的使用

    Java并發(fā)編程之原子性-Atomic的使用

    這篇文章主要介紹了Java并發(fā)編程之原子性-Atomic的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • SpringBoot實現TCP連接并進行數據互傳的方法

    SpringBoot實現TCP連接并進行數據互傳的方法

    本文詳細介紹了微服務架構中的翻譯組件使用場景,以及多種開源翻譯組件的解決方案,文中分析了國內外多個翻譯服務如百度翻譯、谷歌翻譯等,以及如何在微服務項目中集成這些翻譯組件,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • 如何使用新方式編寫Spring MVC接口

    如何使用新方式編寫Spring MVC接口

    這篇文章主要介紹了如何使用新方式編寫Spring MVC接口,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • Spring Boot整合MyBatis-Plus實現CRUD操作的示例代碼

    Spring Boot整合MyBatis-Plus實現CRUD操作的示例代碼

    本文主要介紹了Spring Boot整合MyBatis-Plus實現CRUD操作,可以快速實現數據庫的增刪改查操作,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2025-04-04
  • Java實現數據脫敏(Desensitization)的操作指南

    Java實現數據脫敏(Desensitization)的操作指南

    數據脫敏是指通過對敏感數據進行部分或完全隱藏處理,保護敏感信息在存儲和使用過程中的安全性,常見的應用場景包括日志記錄、接口返回、報表展示、數據分析等,本文給大家介紹了Java實現數據脫敏(Desensitization)的操作指南,需要的朋友可以參考下
    2025-02-02
  • Spring中Eureka的服務下線詳解

    Spring中Eureka的服務下線詳解

    這篇文章主要介紹了Spring中Eureka的服務下線詳解,根據默認的策略,如果在一定的時間內,客戶端沒有向注冊中心發(fā)送續(xù)約請求,那么注冊中心就會將該實例從注冊中心移除,需要的朋友可以參考下
    2023-11-11
  • Java如何將時間戳格式化為日期字符串

    Java如何將時間戳格式化為日期字符串

    這篇文章主要介紹了Java如何將時間戳格式化為日期字符串問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Java Stream reduce()使用指南

    Java Stream reduce()使用指南

    reduce()是Java Stream API中的一個重要終端操作,用于將流中的元素通過二元運算符結合起來,生成單一結果,它主要用于計算總和、乘積、最大值、最小值和字符串連接等,本文給大家介紹Java Stream reduce(),感興趣的朋友一起看看吧
    2024-10-10
  • Java Web基于Session的登錄實現方法

    Java Web基于Session的登錄實現方法

    這篇文章主要介紹了Java Web基于Session的登錄實現方法,涉及Java針對session的操作及表單提交與驗證技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10

最新評論