NIOの基礎知識2
1604 ワード
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());
}
}