为什么在CharBuffer中得到的是乱码?

Pinocchio_Garfield 2006-01-17 10:31:49
1、在学习中自己写了一个函数,读取文件的内容,并将其输出到控制台上,可是输出的总是乱码,请大家多多帮助!
2、源程序如下:
public static void read(String file){
try{
FileInputStream in =new FileInputStream("c:\\"+file+".txt");
FileChannel chan=in.getChannel();
Charset latin1 = Charset.forName("US-ASCII");
CharsetDecoder decoder = latin1.newDecoder();

ByteBuffer buffer=ByteBuffer.allocate(64);
while(true){
buffer.clear();
int num=chan.read(buffer);
System.out.println("Amount :"+num);

if(num==-1) break;
CharBuffer cb = decoder.decode(buffer );
while(cb.hasRemaining()){

System.out.println(cb.get());
}
}

}
catch(Exception e){
e.printStackTrace();
}
}
...全文
317 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tommy_jk 2006-01-17
  • 打赏
  • 举报
回复
int num;
try{
FileInputStream fis =new FileInputStream("c:\\"+args[0]+".txt");
InputStreamReader isr = new InputStreamReader(fis,"GB2312");
BufferedReader br = new BufferedReader(isr);

while(true)
{
num = isr.read();
if(num == -1)
break;
System.out.print((char)num);

}
GBK和GB2312都可以.我用你的方法什么都显示不出来呀.
hzhou 2006-01-17
  • 打赏
  • 举报
回复
Charset latin1 = Charset.forName("US-ASCII");
US-ASCII该成GB2312试试看?
masse 2006-01-17
  • 打赏
  • 举报
回复
try {
BufferedReader in = new BufferedReader(new FileReader("infilename"));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);
}
in.close();
} catch (IOException e) {
}

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧