我想随机从两个文件中读取中文字符
文件中字符排列如下  
第一个文件中  第二个文件中
梦琪          赵
忆柳          钱
之桃          孙
慕青          李使用文件随机进行读取字符 但写入后出现乱码
代码如下public String createname(String name)
{

    File f1=new File("xing.txt");//从姓 名两文件中随机读取,
    File f2=new File("name.txt");
    File f3=new File("demo.tex");//目标文件
    //随机读取
    try{
     
     RandomAccessFile rf1=new RandomAccessFile(f1,"r");
     RandomAccessFile rf2=new RandomAccessFile(f2,"r");
             RandomAccessFile rf3=new RandomAccessFile(f3,"rw");
     StringBuffer namebuffer=new StringBuffer();
     Random ran1=new Random();
     Random ran2=new Random();
     int seek1;
     int seek2;
     boolean ok=false;
     while(!ok)
     {
     seek1=ran1.nextInt(100);
     seek2=ran2.nextInt(100);
     rf1.seek(seek1);
     rf2.seek(seek2);
     //产生随机
     String s1=rf1.readLine();
     String s2=rf2.readLine();
     if((s1!=" ")&&(s2!=" ")&&(s1!="\n ")&&(s2!="\n ")&&(s1!=null)&&(s2!=null)&&(s1!="? ")&&(s2!="? "))
     {ok=true;//如果不为空或几种情况就算读取成功
     namebuffer.append(s1);
     namebuffer.append(s2);
     }//if
     }//while  
     name=namebuffer.toString();
     byte[] bytes=name.getBytes("ISO-8859-1");  //这两句代码有必要吗
      name= new String(bytes,"GBK"); 
             
               f3.writeBytes(name+'\n'); //进行写入,写入之后出现乱码
     return name;
    }//try
    catch(IOException e)
    {
     System.out.println("IOException");
    }
return name;
}//creatname                
   在写入文件之后出现乱码,请问各位高手,应如何解决,在网上找了些关于 JAVA中字符转换的东西,但都是过了,还是没用,请各位指教
   急求,。              

解决方案 »

  1.   

    1. txt文档是ASCII-US编码,Java读写采用Unicode编码...
    2. txt文档的中文字符占用2个字节,RandomAccessFile的读写以1个字节为单位...建议:1. 注意ASCII-US和Unicode转码问题.
    2. 使用Reader/Writer代替RandomAccessFile,前者是按字符单位操作的,一次全部读入,然后在字符串中进行随机操作.
      

  2.   

    FileOutputStream   file=new   FileOutputStream("st.xml");   
      byte[]   b=st.getBytes("GBK");   
      file.write(b);   
      file.frush();   
      file.close(); 
      

  3.   

    3楼的,能解释一下吗,我要对txt读写,不是xml,而且怎么将字符输入文件呢,怎么把b转换为字符
      

  4.   


    import java.io.*;
    import java.io.IOException;
    import java.io.RandomAccessFile;
    import java.util.Random;public class TestFileRead {
    public String createname(String name)
    {
        try{
         FileReader br=new FileReader("c:\\xing.txt");
         FileReader br2=new FileReader("c:\\name.txt");
        
         BufferedReader bf= new BufferedReader(br);
         BufferedReader bf2= new BufferedReader(br2);
        
         String s=bf.readLine();
         String s2=bf2.readLine();
        
         name=s+s2;
         System.out.println(name);
         BufferedWriter bw=new BufferedWriter(new FileWriter("c:\\demo.txt"));
         bw.append(name);
        
         bw.close();     
        }catch(Exception e){
         e.printStackTrace();
        }
        return name;
    }
    public static void main(String []args ){
    TestFileRead trf=new TestFileRead();
    String s="";
    trf.createname(s);
    }
    }
    你可以试着从上面改一下