国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java NIO學習筆記

2019-11-06 06:56:26
字體:
來源:轉載
供稿:網友

http://ifeve.com/java-nio-all/

java.nio.Channel.java

channel表示對于如硬件設備、文件、網絡socket或PRogram component等實體的一個打開的連接,提供一個或多個不同的I/O方法,如讀和寫。channel要么打開,要么關閉。一旦創建即打開,一旦關閉,就一直關閉。當通道關閉后,任何I/O方法都會拋出ClosedChannelException異常。channel是線程安全的。

與流的不同

既可以從通道讀數據,也可以寫數據。而流的讀寫是單向的通道可以異步讀寫通道中的數據總是要先讀到一個Buffer或總是要從一個Buffer讀入

不同實現

FileChannel 從文件中讀寫數據。DatagramChannel 能通過UDP讀寫網絡中的數據。SocketChannel 能通過TCP讀寫網絡中的數據。ServerSocketChannel可以監聽新進來的TCP連接,像Web服務器那樣。對每一個新進來的連接都會創建一個SocketChannel。 //使用FileChannel讀取文件 public static void main(String[] args) throws IOException { RandomaccessFile accessFile=new RandomAccessFile("input.txt","rw"); FileChannel fileChannel=accessFile.getChannel(); ByteBuffer buf=ByteBuffer.allocate(10); int bytesRead=fileChannel.read(buf); while(bytesRead!=-1){ System.out.println("Read"+bytesRead); buf.flip(); while(buf.hasRemaining()){ System.out.print((char)buf.get()); } buf.clear(); bytesRead=fileChannel.read(buf); System.out.println(); } fileChannel.close(); accessFile.close(); }

java.nio.Buffer.java

buffer是一個線性、有限元素序列,存放特定的基本數據類型。capacity是buffer可以容納元素的數目limit表示從下標limit開始,后面的元素都不再讀或寫了position是下一個要讀或寫的元素下標實例對象本質上是一塊可寫可讀的內存區域一旦讀完了所有的數據,就需要清空緩沖區,讓它可以再次被寫入。有兩種方式能清空緩沖區:調用clear()或compact()方法。clear()方法會清空整個緩沖區。compact()方法只會清除已經讀過的數據。 //通道read到buffer,然后要get的時候用;或者put完,通道要把buffer write的時候 public final Buffer flip() { limit = position; position = 0; mark = -1; return this; } //重讀 public final Buffer rewind() { position = 0; mark = -1; return this; }通過調用Buffer.mark()方法,可以標記Buffer中的一個特定position。之后可以通過調用Buffer.reset()方法恢復到這個position。equals()只比較Buffer中的剩余元素是否相等。compareTo()方法比較兩個Buffer的剩余元素
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汝南县| 哈巴河县| 儋州市| 页游| 遂平县| 临沂市| 军事| 富顺县| 丘北县| 古田县| 高雄县| 梧州市| 晋宁县| 古浪县| 淳化县| 饶平县| 大足县| 同心县| 那曲县| 吴川市| 建昌县| 年辖:市辖区| 东乌| 连州市| 黔东| 宁化县| 富宁县| 措美县| 平塘县| 昌宁县| 永昌县| 甘孜| 丽江市| 南雄市| 广州市| 沧州市| 丘北县| 九龙县| 鄯善县| 南平市| 梅州市|