JAVA-4NIO之Channel之間的數(shù)據(jù)傳輸方法
在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); }
以上這篇JAVA-4NIO之Channel之間的數(shù)據(jù)傳輸方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java語言Consistent Hash算法學習筆記(代碼示例)
這篇文章主要介紹了Java語言Consistent Hash算法學習筆記(代碼示例),分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-02-02Java中繼承thread類與實現(xiàn)Runnable接口的比較
這篇文章主要介紹了Java中繼承thread類與實現(xiàn)Runnable接口的比較的相關(guān)資料,需要的朋友可以參考下2017-06-06SpringBoot中接收POST參數(shù)的幾種方式詳解
這篇文章主要介紹了SpringBoot中接收POST參數(shù)的幾種方式,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06Spring?Boot+Aop記錄用戶操作日志實戰(zhàn)記錄
在Spring框架中使用AOP配合自定義注解可以方便的實現(xiàn)用戶操作的監(jiān)控,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot+Aop記錄用戶操作日志實戰(zhàn)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-04-04關(guān)于@Scheduled參數(shù)及cron表達式解釋
這篇文章主要介紹了關(guān)于@Scheduled參數(shù)及cron表達式解釋,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12Object.wait()與Object.notify()的用法詳細解析
以下是對java中Object.wait()與Object.notify()的用法進行了詳細的分析介紹,需要的朋友可以過來參考下2013-09-09