首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

NIO基础知识二

2012-10-06 
NIO基础知识2asCharBuffer()一次可以输出缓冲区中信息。使用方法为:ByteBuffer bufferByteBuffer.allocate

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

热点排行