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();
}
  }

解决方案 »

  1.   

    Charset latin1 = Charset.forName("US-ASCII");
    US-ASCII该成GB2312试试看?
      

  2.   

    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都可以.我用你的方法什么都显示不出来呀.
      

  3.   

    try {
            BufferedReader in = new BufferedReader(new FileReader("infilename"));
            String str;
            while ((str = in.readLine()) != null) {
                System.out.println(str);
            }
            in.close();
        } catch (IOException e) {
        }