package com.wjy.nio;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
public class GetChannel {
private static final int BSIZE=1024;
public static void main(String args[]){
try {
FileChannel fcChannel=new FileOutputStream(new File("./file/out.txt")).getChannel();
fcChannel.write(ByteBuffer.wrap("Some text ".getBytes()));
fcChannel.close();
fcChannel=new FileInputStream(new File("./file/out.txt")).getChannel();
ByteBuffer buffer=ByteBuffer.allocate(BSIZE);
fcChannel.read(buffer);
buffer.flip();
System.out.println(buffer.asCharBuffer().toString());
//*****************************************************************************************
buffer.rewind(); //返回到数据的开始部分
String encoding=System.getProperty("file.encoding");
System.out.println("Decoded using "+encoding+": "+Charset.forName(encoding).decode(buffer));
//*****************************************************************************************
fcChannel=new FileOutputStream(new File("./file/out.txt")).getChannel();
fcChannel.write(ByteBuffer.wrap("Some text".getBytes("UTF-16BE")));
fcChannel.close(); fcChannel=new FileInputStream(new File("./file/out.txt")).getChannel(); buffer.clear();
fcChannel.read(buffer);
buffer.flip();
System.out.println(buffer.asCharBuffer());
//*****************************************************************************************
fcChannel=new FileOutputStream(new File("./file/out.txt")).getChannel();
buffer=ByteBuffer.allocate(BSIZE);
buffer.asCharBuffer().put("Some text");
fcChannel.write(buffer);
fcChannel.close();
fcChannel=new FileInputStream(new File("./file/out.txt")).getChannel();
buffer.clear();
fcChannel.read(buffer);
buffer.flip();
System.out.println(buffer.asCharBuffer());
//*****************************************************************************************
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行结果是:
卯浥?數琠
Decoded using GBK: Some text
Some text
Some text 一堆子空的框框