中文?中文要两个字节的你这样变换,char是一个字节的,肯定要出问题的。如果全是英文字符应该不会出太大的问题

解决方案 »

  1.   

    啊,想起来了,读出的byte要包装一下才行的,中间要有个转换,所以一般读的时候使用BufferedReader来读,中间java处理掉了。
      

  2.   

    读一个文件干吗写得这么复杂,其实有很简单的实现方法,
    中文也不会辣手。如:
    FileInputStream fis = new FileInputStream( filename);//文件名包括路径
    InputStreamReader isr = new InputStreamReader(fis, "iso8859-1") ;
    BufferedReader br = new BufferedReader(isr);
    然后用br.readLine()一行一行的读,不会出现中文乱码问题。
      

  3.   

    这是JDK1.4里的新方法,我想用这个实现,帮我看看这个为什么不行,不管是中文还是英文读出来都是乱码!
      

  4.   

    解:
    import java.io.*;
    import java.nio.channels.*;
    import java.nio.*;
    import java.nio.charset.Charset;public class ReadFile
    {
        public static void main(String[] args)
        {
            ReadFile rf = new ReadFile();
            System.out.println(rf.Rf(args[0]));
        }    public ReadFile(){};
        
        public String Rf(String filename)
        {
            String reString = "";
            File myfile = new File(filename);
            FileInputStream inputFile = null;
            try
            {
                inputFile = new FileInputStream(myfile);
                //System.out.println("File stream creanted successfully.");
                FileChannel inChannel = inputFile.getChannel();
                ByteBuffer buf = ByteBuffer.allocate(200);
                //CharBuffer buf = CharBuffer.allocate(200);
                //他妈的原来是这么一回事
                Charset cs = Charset.forName("gb2312");
                byte[] bt=null;
                while(inChannel.read(buf)!=-1)
                {
                    buf.flip();
                    CharBuffer charbuf = buf.asCharBuffer();
                    reString =reString + (cs.decode(buf)).toString();
                    buf.clear();
                }
                inputFile.close();
            }
            catch(IOException e)
            {
              e.printStackTrace(System.err);
            }
            return reString;
        }
    }