国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java NIO FileChannel:BIO與NIO區(qū)別、核心組成部分和常用方方法

這篇具有很好參考價(jià)值的文章主要介紹了Java NIO FileChannel:BIO與NIO區(qū)別、核心組成部分和常用方方法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1.BIO與NIO的區(qū)別

BIO為阻塞IO,NIO為非阻塞IO。

BIONIO
JAVA1.4之前Java 1.4之后
面向流:以byte為單位處理數(shù)據(jù)面向塊:以塊為單位處理數(shù)據(jù)
同步阻塞同步非阻塞
選擇器(Selector)

1.1NIO的核心組成部分

  • Channels
    Channel是雙向的,既能做讀操作也能做寫操作,常見Channel如下:

Channel類功能
FileChannel文件數(shù)據(jù)讀寫
DtagramChannelUDP數(shù)據(jù)讀寫
ServerScoketChannel和SocketChannelTCP數(shù)據(jù)讀寫
  • Buffers
    緩沖區(qū)

  • Selectors
    選擇器,用于監(jiān)聽多個(gè)通道的事件,可實(shí)現(xiàn)單個(gè)線程就可以監(jiān)聽多個(gè)客戶端通道。

2.Channel

Channel封裝了對(duì)數(shù)據(jù)源的操作,可以操作多種數(shù)據(jù)源,但是不必關(guān)心數(shù)據(jù)源的具體物理結(jié)構(gòu)。Channel用于在字節(jié)緩沖區(qū)和另一側(cè)的實(shí)體之間有效地傳輸數(shù)據(jù)。

Channel所有數(shù)據(jù)都是通過Buffer對(duì)象進(jìn)行處理,通道要么讀數(shù)據(jù)到緩沖區(qū),要么從緩沖區(qū)寫入到通道。

public interface Channle extend Closeable {
	public boolean isOpen();
	public void close() throws IOException;}

2.1 FileChannel

FileChannel常用方法如下;

方法名作用
public int read(ByteBuffer dst)從通道讀取數(shù)據(jù)并放到緩沖區(qū)中
public int write(ByteBuffer src)把緩沖區(qū)的數(shù)據(jù)寫到通道中
public long transferFrom(ReadableByteChannel src, long position, long count)從目標(biāo)通道中復(fù)制數(shù)據(jù)到當(dāng)前通道
public long transferTo(long position, long count, WritableByteChannel target)把數(shù)據(jù)從當(dāng)前通道復(fù)制給目標(biāo)通道

無法直接打開一個(gè)FileChannel,常見的方法是通過inPutStream和outPutStream或RandomAccessFile獲取一個(gè)FileChannel實(shí)例。
示例代碼
文件寫入示例

package com.hero.nio.file;import org.junit.Test;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;//通過NIO實(shí)現(xiàn)文件IOpublic class TestNIO {@Test //往本地文件中寫數(shù)據(jù)public void test1() throws Exception{
	//1. 創(chuàng)建輸出流
	FileOutputStream fos=new FileOutputStream("basic.txt");
	//2. 從流中得到一個(gè)通道
	FileChannel fc=fos.getChannel();
	//3. 提供一個(gè)緩沖區(qū)
	ByteBuffer buffer=ByteBuffer.allocate(1024);
	//4. 往緩沖區(qū)中存入數(shù)據(jù)
	String str="HelloJava";
	buffer.put(str.getBytes());
	//5. 翻轉(zhuǎn)緩沖區(qū)
	buffer.flip();
	while(buffer.hasRemaining()) {
	//6. 把緩沖區(qū)寫到通道中
		fc.write(buffer);
	}
	//7. 關(guān)閉
	fos.close();
	}}

文件復(fù)制示例文章來源地址http://www.zghlxwxcb.cn/news/detail-823065.html

public void test4() throws Exception {
	//1. 創(chuàng)建兩個(gè)流
	FileInputStream fis = new FileInputStream("basic2.txt");
	FileOutputStream fos = new FileOutputStream("basic3.txt");
	//2. 得到兩個(gè)通道
	FileChannel sourceFC = fis.getChannel();
	FileChannel destFC = fos.getChannel();
	//3. 復(fù)制
	destFC.transferFrom(sourceFC, 0, sourceFC.size());
	//4. 關(guān)閉
	fis.close();
	fos.close();}

到了這里,關(guān)于Java NIO FileChannel:BIO與NIO區(qū)別、核心組成部分和常用方方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 嵌入式系統(tǒng)概念及其組成部分

    目錄 硬件部分包括 中央處理器(CPU) 存儲(chǔ)器 輸入/輸出接口 時(shí)鐘 傳感器和執(zhí)行器 軟件部分包括 操作系統(tǒng) 應(yīng)用程序 驅(qū)動(dòng)程序 固件 嵌入式系統(tǒng)是指嵌入到其他設(shè)備或系統(tǒng)中的計(jì)算機(jī)系統(tǒng),它通常具有特定的功能和任務(wù),而且對(duì)于用戶來說是透明的。嵌入式系統(tǒng)通常由硬件和

    2024年02月08日
    瀏覽(25)
  • 【JVM】字節(jié)碼文件的組成部分

    【JVM】字節(jié)碼文件的組成部分

    ??個(gè)人主頁: ?? 葉落閑庭 ??我的專欄:?? c語言 數(shù)據(jù)結(jié)構(gòu) javaEE 操作系統(tǒng) Redis 石可破也,而不可奪堅(jiān);丹可磨也,而不可奪赤。 操作數(shù)棧是臨時(shí)存放數(shù)據(jù)的地方 局部變量表是存放方法中的局部變量的位置 觀察如下代碼的字節(jié)碼文件 具體的java源代碼: 要想看到j(luò)ava的字

    2024年02月08日
    瀏覽(26)
  • 云計(jì)算安全——安全基線以及組成部分

    文章目錄 1、什么是安全基線? 2、安全基線包括哪幾部分? 總結(jié) 安全基線是指一組安全配置標(biāo)準(zhǔn)或最佳實(shí)踐,用于指導(dǎo)和保障計(jì)算機(jī)系統(tǒng)或網(wǎng)絡(luò)的安全性。安全基線包括了操作系統(tǒng)、應(yīng)用程序、網(wǎng)絡(luò)設(shè)備等各種組件的安全配置要求,以及安全控制和審計(jì)要求等。 安全基線通

    2024年02月13日
    瀏覽(25)
  • Postman —— HTTP請(qǐng)求基礎(chǔ)組成部分

    Postman —— HTTP請(qǐng)求基礎(chǔ)組成部分

    一般來說,所有的HTTP?Request都有最基礎(chǔ)的4個(gè)部分組成: URL 、? Method 、? Headers 和 body 。 (1)Method 要選擇Request的Method是很簡(jiǎn)單的,Postman支持所有的請(qǐng)求方式。 (2)URL 要組裝一條Request(請(qǐng)求), URL永遠(yuǎn)是你首先要填的內(nèi)容。在Postman里面,你曾輸入過的URL是可以通過下拉自

    2024年02月03日
    瀏覽(22)
  • Linux內(nèi)核主要組成部分有哪些?

    Linux內(nèi)核主要組成部分有哪些?

    Linux 內(nèi)核由幾大子系統(tǒng)構(gòu)成,分別為進(jìn)程調(diào)度、進(jìn)程間通信(IPC) 、內(nèi)存管理、虛擬 文件系統(tǒng)和網(wǎng)絡(luò)接口。這幾大子系統(tǒng)既相互獨(dú)立又有非常緊密的關(guān)聯(lián)。圖 3-5 展示了內(nèi)核的 幾大子系統(tǒng)之間以及這些子系統(tǒng)和計(jì)算機(jī)系統(tǒng)的其他模塊之間的關(guān)系。 接下來依次介紹內(nèi)核中的各

    2024年02月04日
    瀏覽(21)
  • 什么是業(yè)務(wù)運(yùn)營(yíng)?關(guān)鍵組成部分有哪些?

    什么是業(yè)務(wù)運(yùn)營(yíng)?關(guān)鍵組成部分有哪些?

    企業(yè)領(lǐng)導(dǎo)者使用收入運(yùn)營(yíng)和智能軟件等技術(shù)來分析買家的不同接觸點(diǎn)。這些見解決定了客戶互動(dòng)的成敗,從而改善了業(yè)務(wù)運(yùn)營(yíng),從而帶來了成功。 業(yè)務(wù)運(yùn)營(yíng)包括企業(yè)為保持盈利而執(zhí)行的一系列日常任務(wù)。雖然這些任務(wù)可能因業(yè)務(wù)類型或行業(yè)而異,但它們通常包括 營(yíng)銷、銷售

    2024年02月13日
    瀏覽(27)
  • web3簡(jiǎn)述Dapp組成部分

    好啊 都說光說不練 會(huì)感覺很空啊 那 我們就來進(jìn)入真正的這個(gè)操作過程啊 區(qū)塊鏈這種東西 我們肯定是無法從零開始搭建的 我們?cè)谶@里說 是通過 以太坊提供的公有鏈的應(yīng)用開發(fā)平臺(tái)來做的 就可以理解為 以太坊是一個(gè)大的公共平臺(tái) 人家給我們把地基搭好了 我們只需要在上面

    2024年02月09日
    瀏覽(23)
  • FPGA底層架構(gòu)——FPGA六大組成部分

    FPGA底層架構(gòu)——FPGA六大組成部分

    FPGA底層資源 可編程輸入輸出單元(IOB) 可編程邏輯單元(CLB) 時(shí)鐘管理單元(DCM) 嵌入塊狀RAM(BRAM) 布線資源 內(nèi)嵌的專用硬件模塊(硬IP,硬核) 內(nèi)嵌的底層功能單元(軟IP,軟核) 補(bǔ)充(DSP48、PLL資源、乘法器資源等,) 最重要的部分 bigfont color=\\\"red\\\" 可編程輸入輸出

    2024年04月26日
    瀏覽(23)
  • 說一下JVM的主要組成部分及其作用?

    說一下JVM的主要組成部分及其作用?

    類加載器:根據(jù)給定的全限定名類名(如:java.lang.Object)來裝載class文件到Runtime data area中的method area 執(zhí)行引擎:執(zhí)行classes中的指令 運(yùn)行時(shí)數(shù)據(jù)區(qū):這就是我們常說的JVM的內(nèi)存 本地接口:與native libraries交互,是其它編程語言交互的接口 首先通過編譯器把 Java 代碼轉(zhuǎn)換成字節(jié)碼

    2024年02月22日
    瀏覽(18)
  • (一)JVM實(shí)戰(zhàn)——jvm的組成部分詳解

    (一)JVM實(shí)戰(zhàn)——jvm的組成部分詳解

    本節(jié)內(nèi)容是關(guān)于java虛擬機(jī)JVM組成部分的介紹,通過其組成架構(gòu)圖了解JVM的主要組成部分。 ClassFile: 字節(jié)碼文件 - javac: javac前端編譯器將源代碼編譯成符合jvm規(guī)范的.class文件,即字節(jié)碼文件 - class文件的結(jié)構(gòu)組成: 魔術(shù)、Class文件版本、常量池、訪問標(biāo)志、類索引、父類索引

    2024年04月25日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包