檔案操作 NIO

2021-10-02 02:50:10 字數 1195 閱讀 3046

在我們之前介紹了檔案操作都是通過bio進行實現的,這裡我們以nio來實現檔案的讀寫,nio建立的目的就是實現高速的i/o,提高其效率,nio與bio最重要的區別就是資料打包和傳輸方式,原來的i/o以流的方式處理資料,而nio以塊的方式處理資料。

面向流的i/o系統一次乙個位元組地處理資料,乙個輸入流產生乙個位元組的資料,乙個輸出流消費乙個位元組的資料,這樣就會導致面向流的i/o速度較慢,而面向塊的i/o系統以塊的形式處理資料,每乙個操作都在一步中產生或者消費乙個資料塊,按塊處理資料比按流處理資料快的多。

在nio之內,所有資料都是用緩衝區處理的,其實質就是乙個陣列,通常為乙個位元組陣列,但是也可以使用其他種類的陣列,如:charbuffer、intbuffer、longbuffer、doublebuffer等,其中最最常用的緩衝區型別就是bytebuffer,有關bytebuffer可見 網路程式設計——buffer

我們在進行檔案操作時,還需要使用到channel物件,可以通過它讀取和寫入資料,和上述說的一樣,我們不能夠直接通過通道channel去讀取/寫入資料,而是將資料從通道讀到緩衝區,然後再去快取區讀取資料;寫入也是一樣,先寫入緩衝區,再寫入通道

有關nio更多的應用,我們在網路程式設計中將會介紹

NIO讀取日誌檔案

在分布式開發中對日誌處理的一些簡單思路 一.約定日誌的格式,以及生成規則 1.約定日誌的輸出格式 2.約定生成日誌的目錄 3.約定日誌生成的時段,是按天生成乙個日誌檔案 還是按小時生成 二.日誌抽取 1.日誌抽取的應用對日誌資訊抽取入mysql庫 2.定時統計各個應用所要統計的內容 srping q...

NIO的寫操作分析

很多人對nio的寫操作理解的不深,不知道為什麼要註冊寫事件,何時註冊寫事件,為什麼寫完之後要取消註冊寫事件。selector.iswriteable 方法監控的是核心的寫緩衝器是否可寫,所以除非核心的寫緩衝區滿了,否則一旦乙個socketchannel註冊了寫事件,每次selector都會選中這個s...

NIO字符集操作

示例程式 在開啟相應的檔案 將輸入資料讀入名為 inputdata 的 bytebuffer 之後,我們的程式必須建立 iso 8859 1 latin1 字符集的乙個例項 charset latin1 charset.forname iso 8859 1 然後,建立乙個解碼器 用於讀取 和乙個編碼...