努力の方向の一つ

1238 ワード

ファイルの読み込みには、(1)FileInputStreamからChannelを取得し、(2)Bufferを作成し、(3)ChannelからBufferにデータを読み込みます.
FileInputStream fin = new FileInputStream( "readandshow.txt" );
FileChannel fc = fin.getChannel();
ByteBuffer buffer = ByteBuffer.allocate( 1024 );
fc.read( buffer );

NIOにファイルを書き込むのは、ファイルから読み込むのと同じです.
FileOutputStream fout = new FileOutputStream( "writesomebytes.txt" );
FileChannel fc = fout.getChannel();
ByteBuffer buffer = ByteBuffer.allocate( 1024 );
for (int i=0; i<message.length; ++i) {
     buffer.put( message[i] );
}
buffer.flip();
fc.write( buffer );

バッファ内部の詳細
NIOの2つの重要なバッファコンポーネント:ステータス変数とアクセスメソッド(accessor)
じょうたいへんすう
  position
変数は、どのくらいのデータが書かれているかを追跡します.より正確には、次のバイトが配列のどの要素に配置されるかを指定します.
  limit
変数は、バッファからチャネルに書き込むときにどれだけのデータを取り出す必要があるか、またはチャネルからバッファを読み込むときにどれだけの空間を入れることができるかを示します.positionは常にlimit以下である.
  capacity
バッファのcapacityは、バッファに格納できる最大データ容量を示します.limitは決してcapacityより大きくしてはいけない.
flip()メソッド
   1.limitを現在のpositionに設定します.
   2.positionを0に設定します.
clear()メソッド
   1.limitをcapacityと同じに設定します.
    2.positionを0に設定します.