package stream.demo1;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
public class BufferToText
{
private static final int BSIZE = 1024;
public static void main(String[] args)
throws Exception
{
FileChannel fc = new FileOutputStream("data3.txt").getChannel();
fc.write(ByteBuffer.wrap("Some text".getBytes()));
fc.close();
fc = new FileInputStream("data3.txt").getChannel();
ByteBuffer buff = ByteBuffer.allocate(BSIZE);
fc.read(buff);
buff.flip();
System.out.println(buff.asCharBuffer());// 输出数据,乱码
// 重绕此缓冲区。将位置设置为零并丢弃标记。
buff.rewind();
// 获取系统编码格式
String encoding = System.getProperty("file.encoding");
// Charset.forName(encoding).decode(buff)用Charset去解析缓冲字节流
System.out.println("Decoded using " + encoding + " : " + Charset.forName(encoding).decode(buff));// 输出数据,无乱码
fc = new FileOutputStream("data3.txt").getChannel();
fc.write(ByteBuffer.wrap("Some text".getBytes()));
fc.close();
fc = new FileInputStream("data3.txt").getChannel();
buff.clear();
fc.read(buff);
buff.flip();
System.out.println(buff.asCharBuffer()); // 输出数据,乱码
fc = new FileOutputStream("data3.txt").getChannel();
buff = ByteBuffer.allocate(24);
buff.asCharBuffer().put("Some text");
fc.write(buff);
fc.close();
fc = new FileInputStream("data3.txt").getChannel();
buff.clear();
fc.read(buff);
buff.flip();
System.out.println(buff.asCharBuffer());// 输出数据,乱码
}
}