NIOの基礎知識2


asCharBuffer()は一度にバッファ内の情報を出力することができる.使用方法:
   ByteBuffer buffer=ByteBuffer.allocate(1024);
   System.out.println(buffer.asCharBuffer());

//
ここで注意:通常バッファは通常バイトを収容しており、文字に変換すると、入力時に符号化されます.コードは以下の通りです.
public class BufferToText {

	private static final int BSIZE=1024;
	public static void main(String[] args) throws Exception{
		FileChannel fc=new FileOutputStream("D:\\data2.txt").getChannel();
		fc.write(ByteBuffer.wrap("some txtx".getBytes()));
		fc.close();
		fc=new FileInputStream("D:\\data2.txt").getChannel();
		ByteBuffer buffer=ByteBuffer.allocate(BSIZE);
		fc.read(buffer);
		buffer.flip();
		
		//while(buffer.hasRemaining())
			//System.out.print((char)buffer.get());
		
// : , 
		System.out.println(buffer.asCharBuffer());
		
		
		buffer.rewind();// 
		
		
		String encoding=System.getProperty("file.encoding");
		System.out.println("decode using "+encoding+":"+Charset.forName(encoding).decode(buffer));
		fc=new FileOutputStream("D:\\data2.txt").getChannel();
		fc.write(ByteBuffer.wrap("Some text2".getBytes("UTF-16BE")));
		fc.close();
		fc=new FileInputStream("D:\\data2.txt").getChannel();
		buffer.clear();
		fc.read(buffer);
		buffer.flip();
                  // , 
		System.out.println(buffer.asCharBuffer());
		
		
		
		
	}
}