最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javaNIO中關(guān)于ByteBuffer的用法

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

javaNIO中ByteBuffer用法

ByteBuffer類是在javaNIO中常常使用的一個緩沖區(qū)類,使用ByteBuffer可以進(jìn)行高效的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內(nèi)部字段

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

flip()方法寫完數(shù)據(jù)需要開始讀的時(shí)候,將position復(fù)位到0,并將limit設(shè)為當(dāng)前position

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

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

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

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

 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包,報(bào)錯java.nio.bytebuffer.limiy(i)

問題描述

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

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

原因分析

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

解決方案

換成更低的版本1.9.39

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java多線程實(shí)現(xiàn)之同步方法詳解

    Java多線程實(shí)現(xiàn)之同步方法詳解

    當(dāng)多個線程同時(shí)訪問共享資源時(shí),可能會導(dǎo)致數(shù)據(jù)不一致等線程安全問題,Java提供了synchronized關(guān)鍵字來實(shí)現(xiàn)線程同步,確保同一時(shí)刻只有一個線程可以訪問共享資源,下面就來介紹一下如何使用,感興趣的可以了解一下
    2025-12-12
  • Java工廠模式之簡單工廠,工廠方法,抽象工廠模式詳解

    Java工廠模式之簡單工廠,工廠方法,抽象工廠模式詳解

    這篇文章主要為大家詳細(xì)介紹了Java工廠模式之簡單工廠、工廠方法、抽象工廠模式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Java面試題沖刺第七天--Spring框架1

    Java面試題沖刺第七天--Spring框架1

    這篇文章主要為大家分享了最有價(jià)值的三道Spring框架面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-07-07
  • java通過ip獲取客戶端Mac地址的小例子

    java通過ip獲取客戶端Mac地址的小例子

    java通過ip獲取客戶端Mac地址的小例子,需要的朋友可以參考一下
    2013-03-03
  • Spring解決循環(huán)依賴問題的三種方法小結(jié)

    Spring解決循環(huán)依賴問題的三種方法小結(jié)

    在 Spring 中,循環(huán)依賴問題指的是兩個或多個 bean 之間相互依賴形成的閉環(huán),具體而言,當(dāng) bean A 依賴于 bean B,同時(shí) bean B 也依賴于 bean A,就形成了循環(huán)依賴,本文就給大家介紹了Spring解決循環(huán)依賴問題的三種方法,需要的朋友可以參考下
    2023-09-09
  • Spring中Bean掃描原理詳情

    Spring中Bean掃描原理詳情

    這篇文章主要介紹了Spring中Bean掃描原理詳情,文章為榮啊主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • spring?cloud?配置阿里數(shù)據(jù)庫連接池?druid的示例代碼

    spring?cloud?配置阿里數(shù)據(jù)庫連接池?druid的示例代碼

    這篇文章主要介紹了spring?cloud?配置阿里數(shù)據(jù)庫連接池?druid,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Java定時(shí)調(diào)用.ktr文件的示例代碼(解決方案)

    Java定時(shí)調(diào)用.ktr文件的示例代碼(解決方案)

    這篇文章主要介紹了Java定時(shí)調(diào)用.ktr文件的示例代碼,本文給大家分享遇到問題及解決方法,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(44)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(44)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07
  • Java文件操作實(shí)例詳解

    Java文件操作實(shí)例詳解

    這篇文章主要為大家詳細(xì)介紹了Java文件操作實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04

最新評論

西青区| 鄂托克前旗| 尤溪县| 沅陵县| 龙南县| 岳阳县| 贞丰县| 报价| 项城市| 彰化县| 依兰县| 姜堰市| 庆阳市| 泾源县| 易门县| 长顺县| 璧山县| 巫溪县| 玉田县| 新和县| 新巴尔虎右旗| 刚察县| 武威市| 龙川县| 即墨市| 常熟市| 云和县| 田林县| 荥阳市| 太原市| 惠水县| 怀远县| 桂阳县| 巴彦县| 克山县| 永丰县| 吉安市| 漯河市| 红安县| 靖州| 彭水|