1. 程式人生 > >Java NIO 的簡單讀寫 以及理解

Java NIO 的簡單讀寫 以及理解

   Java  NIO  引入的新概念

   1.緩衝區:

   2.通道:

   3.選擇器:

   "nio放在jvm的直接記憶體中"

   java  的io  與  nio的區別主要是 “阻塞和非阻塞的區別”。

  java  io:主要是通過   ”連線————執行緒“實現的。一個連結對應一個執行緒。

  java nio:主要是通過   ”請求————執行緒“實現的。利用了選擇器的優勢。通過選擇器進行註冊在管道里執行緒的選擇

  簡單的例子  :  客車停車請求。{售貨員,司機,客戶}。

一。利用nio進行 檔案的讀寫。

利用  Paths.get("c:a.txt");  來獲取檔案路徑。  Paths

利用 br=Files.newBufferedReader(p, StandardCharsets.UTF_8); 來獲取對應的檔案讀取緩衝流。  Files

還有 Files.readAllLiens(); 和 Files.readAllBytes();

二。利用NIO{FileChannel}進行檔案的讀寫。

利用  Paths.get("");來獲取對應檔案。

利用  FileChannel.open(p,StandardOpenOption.READ);來進行返回讀寫操作。

利用 返回的FileChannel物件呼叫read()操作。  //這裡的read讀的是byte型別。ByteBuffer.allocate(1024);開buffer空間

利用 buffer.flip();來進行復位。

Charset c=Charset.forName("GBK");  //都是nio的新方法,用來進行位元組碼的轉換
System.out.println(c.decode(bb));  //用來進行buffer的輸出

FileChannel 物件裡面的position用來定位到固定位置 ,完後可進行對應的read 或者writer操作。

fc.write(ByteBuffer.wrap("你好".getBytes()));//來進行buffer的寫操作。

三。Java7中新增的非同步NIO。

AsynchronousFileChannel-------用於檔案的io

AsynchronousSocketChannel-------用於套接字io,支援超時。

AsynchronousServerSocketChannel-------用於套接字接受非同步連線。

注意:非同步NIO於同步NIO的區別除了關鍵字不一樣之外  ,還多了個 Future  關鍵字 ,是上邊關鍵字的返回型別。

應為是非同步的線上程執行期間{可以通過返回型別Future來判斷是否執行完成}可以做其他的事情。

Future<Integer> f=af.read(ByteBuffer.allocate(1024*1024),0);

四。回撥式非同步讀取。

利用asychronousFileChannel 方法 物件 呼叫read ()在read裡面的引數中進行匿名內部類CompletionHandler的實現  ,成功後走Completed方法,失敗後走failed方法。 



相關推薦

Java NIO簡單 以及理解

   Java  NIO  引入的新概念    1.緩衝區:    2.通道:    3.選擇器:    "nio放在jvm的直接記憶體中"    java  的io  與  nio的區別主要是 “阻塞和非阻塞的區別”。   java  io:主要是通過   ”連線———

JAVA FileUtils(檔案以及操作工具類)

轉別人的合併的連結 //https://www.cnblogs.com/chenhuan001/p/6575053.html   //https://blog.csdn.net/lovoo/article/details/77899627 第一個連結找不到了作者看見了說一下我給你上鍊接

Java nio(檔案 例項解析)

讀寫操作是I/O操作的基本行為;NIO中從Channel中讀資料非常簡單:建立一個buffer;通過一個channel完成buffer的資料讀入;寫資料同樣簡單:建立一個buffer;向其中填充資料;然後通過一個channel完成buffer的資料寫入; 下面通過java的實

Python第三周之文件的以及簡單的爬蟲介紹

以及 under url error: except __name__ quest for div 文件的讀寫   讀 import time def main(): """ 文件的讀寫,註意open的用法以及,文件地址的輸入。 :retur

java大檔案操作,java nio 之MappedByteBuffer,高效檔案/記憶體對映

原文地址:https://www.cnblogs.com/lyftest/p/6564282.html   java處理大檔案,一般用BufferedReader,BufferedInputStream這類帶緩衝的Io類,不過如果檔案超大的話,更快的方式是採用MappedByteB

Java Web:JSON 作為配置檔案,簡單的方法

讀取配置檔案 先大概說一說思路。首先配置檔案以 *.json 格式儲存在服務端磁碟上。要讀取改配置檔案的話,通過 java.io.File 包讀取磁碟內容,然後形成介面,作為響應內容返回到客戶。既然 Web 瀏覽器天然支援 JSON,這讀取一過程我們藉助 <script

22、Java並發性和多線程-Java中的/

權限 原理 目的 str sco readers 閱讀 操作 wait 以下內容轉自http://ifeve.com/read-write-locks/: 相比Java中的鎖(Locks in Java)裏Lock實現,讀寫鎖更復雜一些。假設你的程序中涉及到對一些共享資源

java 文件操作】 生成隨機數,寫入txt,然後從txt中讀出

進行 rac 直接 生成隨機數 catch trace buffered 代碼 tac 1.把生成的隨機數寫入到文件中 1 public static void WriterFun(){ 2 //獲得路徑 3 String filep

cookies的簡單方法

cookie一、cookie的寫入//定義COOKIES,實例化HttpCookie類並添加值HttpCookie cookie = new HttpCookie(key, value); //設置保存時間 cookie.Expires = DateTime.Now.AddDays(1);//添加當前實例化

C#基礎視頻教程6.3 如何簡單數據庫

一點 犯錯 .html ack ble 數字 擴展 你知道 定義 在繼續往下做之前,我們需要把之前的代碼盡可能的精簡(會對後面很有好處,而且讀者也應該仔細比對這一部分的代碼和上一部分哪裏真正得到了優化,從而提高編程水平)。 首先數據庫的操作類有哪些是可以做的更加普遍,變量

java 文件

字節流 就會 brush not line 程序 sdf highlight write import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.DataInputStrea

Java 文件操作

顯示行號 splay pri images amp index 文件內容 ges 顯示 1【1】按字節讀寫,一次只讀取一個字節,效率比較低 1 package bk1; 2 3 import java.io.File; 4 import java.io.File

java文件

length 字符流 try nbsp pan rgs output 傳輸 str IO流簡單來說就是輸入流和輸出流主要是用來處理設備之間的數據傳輸 案例1采用的是字節流方式,案例2采用字符流方式;字節流和字符流之間差異很大,讀者需根據自己的場景使用 案例1:   采用

java按行文件和輸入處理

gin path lines 一個 static apple OS puts oid 一、我們來看python的很簡單: 1、讀文件: 1 with open("/path/file","r") as fr: 2 for line in fr.readlines(

Java IO如何文件

writer 中文 dwr buffer 串流 輸入 ioe tput 字符   Java把這些不同來源和目標的數據都統一抽象為數據流;Java語言的輸入輸出功能是十分強大而靈活的;在Java類庫中,IO部分的內容是很龐大的,因為它涉及的領域很廣泛:標準輸入輸出,文件的操作

node--初步了解-01 小文件簡單

第一個 -- 了解 讀取文件 odi txt script lag read let fs = require(‘fs‘);// 方法都是 異步沒有sync / 同步 Sync// 返回值可以獲取同步的結果let path = require(‘path‘);// 讀取文件

Java並發- 鎖中的性能之王:StampedLock

第一個 jdk1.8 轉換 cpu 原生 判斷 四種 空間 blog 為什麽StampedLock這麽神奇?能夠達到這種效果,它的核心思想在於,在讀的時候如果發生了寫,應該通過重試的方式來獲取新的值,而不應該阻塞寫操作。這種模式也就是典型的無鎖編程思想,和CAS自旋的思想一

Java 之 檔案及效能比較總結

Java 之 檔案讀寫及效能比較總結 2014年05月12日 17:56:49 閱讀數:21765  幹Java這麼久,一直在做WEB相關的專案,一些基礎類差不多都已經忘記。經常想得撿起,但總是因為一些原因,不能如願。 其實不是沒有時間,只是有些時候疲於總結,今得空,下定決心

Qt簡單xml

這裡只簡單舉例,讀寫是關聯在一起的。 xml文件的內容是: <?xml version="1.0" encoding="UTF-8"?> <fileinfo>  <filename>test</filename>  &l

沉澱再出發:java的檔案

沉澱再出發:java的檔案讀寫 一、前言   對於java的檔案讀寫是我們必須使用的一項基本技能,因此瞭解其中的原理,位元組流和字元流的本質有著重要的意義。 二、java中的I/O操作  2.1、檔案讀寫的本質    概念框架: 1 方式