1. 程式人生 > >java NIO Channel 學習總結

java NIO Channel 學習總結

Java NIO 的核心組成部分:

1.Channels
2.Buffers
3.Selectors

Java NIO的通道類的功能似流,但又有些不同:

  • 既可以從通道中讀取資料,又可以寫資料到通道。但流的讀寫通常是單向的。
  • 通道可以非同步地讀寫。
  • 通道中的資料總是要先讀到一個Buffer,或者總是要從一個Buffer中寫入。

Java NIO中最重要的通道的實現包含四個

FileChannel 從檔案中讀寫資料。
DatagramChannel 能通過UDP讀寫網路中的資料。
SocketChannel 能通過TCP讀寫網路中的資料。
ServerSocketChannel可以監聽新進來的TCP連線。對每一個新進來的連線都會建立一個SocketChannel。

FileChannel 示例

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

public class ChannelExample {

    public static void main(String[] args){
        try {
            RandomAccessFile aFile = new
RandomAccessFile("D:\\logs\\download.info.2017-10-26.log", "rw"); FileChannel inChannel = aFile.getChannel(); ByteBuffer buf = ByteBuffer.allocate(48); int bytesRead = inChannel.read(buf); while (bytesRead != -1){ System.out.println("Read "
+ bytesRead); //flip()之後,讀/寫指標position指到緩衝區頭部,並且設定了最多隻能讀出之前寫入的資料長度 buf.flip(); //返回剩餘的可用長度 while(buf.hasRemaining()){ System.out.print((char) buf.get()); } //讀入channel中的資料 buf.clear(); bytesRead = inChannel.read(buf); } aFile.close(); } catch (IOException e) { e.printStackTrace(); } } }

程式首先將檔案與channel關聯,隨後將channel中的資料讀入buffer之中,使用者最後讀取buffer進而得到檔案中資料。

參考連結

相關推薦

java NIO Channel 學習總結

Java NIO 的核心組成部分: 1.Channels 2.Buffers 3.Selectors Java NIO的通道類的功能似流,但又有些不同: 既可以從通道中讀取資料,又可以寫資料到通道。但流的讀寫通常是單向的。 通道可以非同步地讀寫。 通

Java IO流學習總結

系統 指針 數組 rar amr redo 修改 接收 學習 Java IO流學習總結 Java流操作有關的類或接口: Java流類圖結構: 流的概念和作用 流是一組有順序的,有起點和終點的字節集合,是對數據傳輸的總稱或抽象。即數據在兩設備間的傳輸稱為流,流

Java IO流學習總結(轉)

rar output 出現 arr system 不存在 技術分享 輸出 寫入 原文地址:http://www.cnblogs.com/oubo/archive/2012/01/06/2394638.html Java流操作有關的類或接口: Java流類圖結構:

20165235 Java第一周學習總結

工作目錄 app -name 方式 學習總結 class ava linu 強制 20165235 Java第一周學習總結 Ubuntu下git的安裝與使用 首先Ubuntu下git的安裝,使用sudo apt-get install git下載Ubuntu,下載完成後可

Java菜鳥學習總結Java基礎知識(類)

個數 修飾符 trac 空間 釋放 set 大小 成員方法 的區別 目錄 【Java菜鳥學習總結】Java基礎知識(類) 1、面向對象編程 2、類 3、static關鍵字 4、final關鍵字 【Java菜鳥學習總結】Java基礎知識(類) 1、面向對象編程 1.1

Java NIO Channel

lac ipy written tox ren 技術分享 bye vip -c Java NIO Channel Channel Implementations Basic Channel Example Jakob JenkovLast update

java第二周學習總結

rec 截取 如果 ringbuf 循環控制 取字符 wid other min 《面向對象程序設計(java)》第二周學習總結 實驗時間2018-9-6 1,第三章知識點總結 一、基本數據類型:分為整型(4),浮點型(2),字符型,布爾型,一共8種1.整型需要註意的:JA

Java設計模式學習總結

pattern 實現 產出 創建 依賴 相關 功能 實例化 觀察 設計思想:面向接口編程;應對變化(數量、類型、擴展),封裝變化; (一)設計原則1. 封裝變化 2. 多用組合,少用繼承 3. 針對接口編程,不針對實現編程 4. 為交互對象之間的松耦合設計而努力 5. 開閉

Java NIO學習綜述

目錄   簡介 緩衝區(Buffer) 通道(Channel) 選擇器(Selector) 簡單案例 總結 簡介 為提升java程式的執行速度,我們經常將精力放在程式碼優化上面,很少關注影響較大的I/O流方面.多數情況下,並非作業系統不能做到快速的傳

Java- Reflect 反射 學習 總結

目錄 Class 類的使用 動態載入類 獲取方法資訊 獲取成員資訊 獲取構造方法 方法的反射 泛型的本質 學習總結 1、Class 類的使用         

Java第四周學習總結

教材學習內容總結 1.運算子及表示式 算數運算子: 二目運算子:+  -  *  /  %                       &

java泛型學習總結

1.泛型在集合中的使用(掌握) 2.自定義泛型類、泛型介面、泛型方法(理解 --->使用) 3.泛型與繼承的關係 4.萬用字元 1.在集合中不使用泛型 public void test1(){     List list = new ArrayList()

java執行緒學習總結

1.理解程式、程序、執行緒的概念 程式可以理解為靜態的程式碼 程序可以理解為執行中的程式。 執行緒可以理解為程序的進一步細分,程式的一條執行路徑 2.如何建立java程式的執行緒(重點) 方式一:繼承於Thread類   class PrintNum

Java IO流學習總結二:File

Java File類的功能非常強大,利用java基本上可以對檔案進行所有操作。首先來看File類的建構函式的原始碼 /** * Internal constructor for already-normalized pathname strings. */ private F

Java IO流學習總結一:輸入輸出流

Java流類圖結構:   流的概念和作用 流是一組有順序的,有起點和終點的位元組集合,是對資料傳輸的總稱或抽象。即資料在兩裝置間的傳輸稱為流,流的本質是資料傳輸,根據資料傳輸特性將流抽象為各種類,方便更直觀的進行資料操作。 IO流的分類 根據處理資料型別的不同分為:字元流和位元組

Java Dalvik簡要學習總結

1概要 Dalivik虛擬機器有兩個堆,包括zygote堆和Active 堆,前者是不太變化的,是從父程序公用的相同實體記憶體的堆,因為很少發生寫操作在這個堆上,所以寫時複製機制不會發生在這個堆上,這也是android執行時比較巧妙的地方。 Live Heap Bitmap 和 M

java執行緒學習總結(一)

(宣告:並非原創,只是一個簡單總結) 一、執行緒和程序的概念:            程序:程序是處於執行過程中的程式,並且具有一定的對功能,是系統進行資源分配和排程的一個獨立單位。      

Java NiO 緩衝區學習筆記

  一、緩衝區(Buffer):在 Java NIO 中負責資料的存取。緩衝區就是陣列。用於儲存不同資料型別的資料         根據資料型別不同(boolean 除外),提供了相應型別的緩衝區:  ByteBuf

JAVA菜鳥學習總結:Lucene的搜尋

小號 ** 搜尋Lucene的學習: ** 搜尋按功能分為:垂直搜尋(細分搜尋),綜合搜尋,還此外包括站網站內搜尋軟體狀語從句:搜尋內部搜尋的關鍵字:索引搜尋引擎的英文通過網路爬蟲從網際網路電子雜誌|網頁放在臨時庫中,然後通過過濾篩選出符合規則並且索

JAVA第二週學習總結

201711671102 曾燃亮 《java程式設計》第2周學習總結 教材學習內容總結 第二章 java語言有8種基本資料型別 一.型別轉換運算 1.當級別從低到高時系統會自動轉換。 byte short char int long float double 2