您的位置:首页 > Web前端

Charset的基本运用以及ByteBuffer-position的注意点

2017-09-13 19:31 253 查看
package NIO;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;

import java.util.SortedMap;

public class CharSet {
public static void main(String[] args) throws IOException{
FileInputStream fis=new FileInputStream("c:\\jdk\\a.txt");
FileOutputStream fos=new FileOutputStream("c:\\jdk\\a.txt");
FileChannel fco=fos.getChannel();
String s=new String("142345a陈");
fos.write(s.getBytes("GBK"));
fos.write('1');//写字符不乱码
ByteBuffer bf=ByteBuffer.allocate(100);
bf.put(s.getBytes("GBK"));
bf.clear();//一定不能忘,不然读写都有问题,pointer定位到起点
fco.write(bf);//bf定位到100
System.out.println(bf.capacity());
bf.putChar(10,'x');
bf.clear();
//获取java支持的字符集
/* SortedMap<St
8f0e
ring, Charset> map=Charset.availableCharsets();
for(String ss:map.keySet()) {
System.out.println(ss+"----->"+map.get(ss));
}*/
Charset cs=Charset.forName("GBK");//(编码解码不一致)文件编码导致的MalformedInputException异常
CharsetDecoder dc=cs.newDecoder();
CharBuffer cb=dc.decode(bf);
System.out.println(cb);

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: