真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JAVA-4NIO中如何實現(xiàn)Channel的數(shù)據(jù)傳輸-創(chuàng)新互聯(lián)

JAVA-4NIO中如何實現(xiàn)Channel的數(shù)據(jù)傳輸?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

創(chuàng)新互聯(lián)建站 - 西部信息中心,四川服務器租用,成都服務器租用,四川網(wǎng)通托管,綿陽服務器托管,德陽服務器托管,遂寧服務器托管,綿陽服務器托管,四川云主機,成都云主機,西南云主機,西部信息中心,西南服務器托管,四川/成都大帶寬,成都機柜租用,四川老牌IDC服務商

在Java NIO中,如果兩個通道中有一個是FileChannel,那你可以直接將數(shù)據(jù)從一個channel(譯者注:channel中文常譯作通道)傳輸?shù)搅硗庖粋€channel。

transferFrom():被動接收

FileChannel的transferFrom()方法可以將數(shù)據(jù)從源通道傳輸?shù)紽ileChannel中(譯者注:這個方法在JDK文檔中的解釋為將字節(jié)從給定的可讀取字節(jié)通道傳輸?shù)酱送ǖ赖奈募校?/p>

方法的輸入?yún)?shù)position表示從position處開始向目標文件寫入數(shù)據(jù),count表示最多傳輸?shù)淖止?jié)數(shù)。如果源通道的剩余空間小于 count 個字節(jié),則所傳輸?shù)淖止?jié)數(shù)要小于請求的字節(jié)數(shù)。

此外要注意,在SoketChannel的實現(xiàn)中,SocketChannel只會傳輸此刻準備好的數(shù)據(jù)(可能不足count字節(jié))。因此,SocketChannel可能不會將請求的所有數(shù)據(jù)(count個字節(jié))全部傳輸?shù)紽ileChannel中。

transferTo():主動發(fā)送

transferTo()方法將數(shù)據(jù)從FileChannel傳輸?shù)狡渌腸hannel中。下面是一個簡單的例子:

除了調(diào)用方法的FileChannel對象不一樣外,其他的都一樣。

上面所說的關(guān)于SocketChannel的問題在transferTo()方法中同樣存在。SocketChannel會一直傳輸數(shù)據(jù)直到目標buffer被填滿。

例子:

@Test
  public void test2() {
    RandomAccessFile fromFile = new RandomAccessFile("fromFile.txt", "rw");
    FileChannel fromChannel = fromFile.getChannel();
    RandomAccessFile toFile = new RandomAccessFile("toFile.txt", "rw");
    FileChannel toChannel = toFile.getChannel();
    long position = 0;
    long count = fromChannel.size();

    //從from 讀到 本通道;注意socketfrom只會發(fā)送已經(jīng)準備好的,不會發(fā)送count個
    toChannel.transferFrom(fromChannel,position, count);
    //將本通道 寫到 to;注意sockedfrom會一直發(fā)送,直到to被填滿
    fromChannel.transferTo(position, count, toChannel);
  }

網(wǎng)頁標題:JAVA-4NIO中如何實現(xiàn)Channel的數(shù)據(jù)傳輸-創(chuàng)新互聯(lián)
標題URL:http://weahome.cn/article/dpeecj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部