NIO基础知识2

asCharBuffer()一次可以输出缓冲区中信息。使用方法为:

   ByteBuffer buffer=ByteBuffer.allocate(1024);
System.out.println(buffer.asCharBuffer());



//[b]这个地方注意:[/b]普通缓冲器容纳的是普通字节,假如把它们转换成字符,要在输入他们的时候进行编码,代码如下:

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());




}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值