1 概要
新しい IO、java1.4 バージョンから導入された新しい IO は、標準 IO を置き換えることができます。
データの読み取りと書き込みが可能なデータ ソースとのオープン接続を表します。この種の読み取りおよび書き込み操作はデータ ブロックに基づいています。
チャネルはデータを読み書きするためのバッファです。チャネルは読み取ったデータをバッファに格納し、バッファ内のデータをファイルに書き込みます。
1 つのスレッドが複数のチャネルを監視できるようにします。
読み取り、書き込み、およびランダム アクセスの両方をサポートするファイル操作オブジェクト。ファイルのすべてのバイトを含む配列と同等です。
IOはバイトまたは文字を基本単位として使用し、NIOはデータブロックを基本単位として使用します。
IO 操作はスレッドをブロックしますが、NIO はスレッドをブロックしません。
IO操作のストリームにはインデックスが無く、操作位置を特定することができません。 NIOデータにはインデックスがあり、操作箇所を指定することができます。
IO はロックをサポートしませんが、NIO はロックをサポートします。ロックの機能はファイルへのアクセスを制御することです。
入力ストリームと出力ストリームに基づいてオブジェクトを作成します:
InputStream is=new FileInputStream(String name); FileChannel channel=is.getChannel();
RandomAccessFile オブジェクトに基づいてオブジェクトを作成します
2入力に基づく ストリームによって作成されたオブジェクトは入力のみ可能、出力ストリームに基づいて作成されたオブジェクトは出力のみ可能、RandomAccessFile に基づいて作成されたオブジェクトは入力と出力の両方に使用できます。
3. チャネル内のデータにはインデックスがあり、読み取りおよび書き込みの場所を指定できます。4. よく使用されるメソッド
1. 3 つの重要な属性
RandonAccessFile file=new RandomAccessFile(String name ,"rw"); FileChannel channel=file.getChannel();
put(Object data):将数据写入当前位置,同时将光标向前移动一个数据单位。
get():获取当前位置的数据,同时将光标向前移动一个数据单位。
flip():通过调整position与limit的值切换读写模式。
clear():并非清空缓冲区,而是调整position=0,limit=capacity,mark=-1。
array():将ByteBuffer中的数据复制的数组中。
在系统当中建立文件的映射,如果采用读写模式,那么对该映射的操作会反映到文件中。
由于将文件映射到内存中,资源消耗较大,只有在文件较大的情况下才将文件映射到内存中。
MappedByteBuffer mbb=channel.map(MapMode mode,long offset,long size);
有3中映射方式:
READ_ONLY:映射内容只允许读,不允许修改。
READ_WRITE:映射内容既允许读,也允许改,修改内容会反映到文件中。
PRIVATE:在本地创建一个副本,读写操作都是针对副本,写不会反映到原始文件中。
以上がNIO の概要と NIO と IO の比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。