str=raFile.readLine();
改一下:
byte[] b=new byte[50];
raFile.read(b);
str=new String(b,"GB2312");

解决方案 »

  1.   

    class Temp
    {
      public static void main(String args[])
       {
        try
         {
            File inputFile=new File("f:\\read.txt");
            RandomAccessFile raFile=new RandomAccessFile(inputFile,"r");        String str;
            while ((str=raFile.readLine() )!= null) {
                System.out.println(str);
                System.out.println(str.length());
            }
            raFile.close();
          }     catch(FileNotFoundException e)
           {System.err.println("FileStreanTest:"+e);}
         catch(IOException e)
           {System.err.println("FileStreamTest:"+e);}
    }}
      

  2.   

    我觉得str.length()是这一行汉字数目的2倍,这是正常的
    1个汉字的存储空间是字符的2倍显示不出来
    问题处在inf.readLine();读出时把byte[]转换成了String,java把byte[]转换成String时都会进行编码,系统默认的应该是iso-8859-1,而简体中文系统中的txt文件的编码是gb2312,所以就出现了乱码.所以要转换一下。
    你用这个语句转换一下:
    new String( count.getBytes( "gb2312" ), "ISO8859-1" )