java nio 乱码_java nio问题,乱码,

javanio问题,乱码,初步判断是因为在循环读取数据中,把一个汉字拆分到这次循环,与下次循环里了,解决办法可以是把数组整成一个大数组,再转成字符串,求大侠们有没有别的招?代码如...

java nio问题,乱码,初步判断是因为 在循环读取数据中,把一个汉字拆分到这次循环,与下次循环里了,解决办法可以是把数组整成一个大数组,再转成字符串,求大侠们有没有别的招?

代码如下:

public static String read(String path){

FileChannel fc = null;

FileInputStream fi = null;

StringBuffer sb = new StringBuffer();

try {

Charset charset = Charset.forName("gbk");

fi = new FileInputStream(path);

fc = fi.getChannel();

ByteBuffer buf = ByteBuffer.allocate(64);//这里缓存区大小,设置的越大,乱码就越少,设置的越小,乱码就越频繁

while(-1 != fc.read(buf)){

buf.flip();

sb.append(charset.decode(buf));

buf.clear();

}

fc.close();

fi.close();

System.out.println(sb);

return sb.toString();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

try {

if(fc!=null)

fc.close();

if(fi!=null)

fi.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return null;

}

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值