乱码是针对阅读器来说的,
对于你采用流来io,是没有分别的!
代码很简单,
没什么难度的,
你打开文件,
读出一定字节,
然后写入新文件,
只到文件结束为止
关闭
ok

解决方案 »

  1.   

    下面是我的代码a aa=new a();
    String str=new String();
    String usedDay=new String();    //已试用次数
    String haveDay=new String();    //设定可使用次数
    BufferedReader br=new BufferedReader(new FileReader("c:\\a.txt"));
    PrintWriter writer;
    while(true)
    {
    str=br.readLine();
    if(str==null)               //读到文件尾
    break;
    int point=str.indexOf('&');
    haveDay=str.substring(point+1);
    usedDay=str.substring(0,point);
    }
    //System.out.println("sfsf-------"+haveDay); 
    //System.out.println("sfsf-------"+usedDay); 
    if(haveDay==null)haveDay="";
    if(usedDay==null)usedDay="";
    if(haveDay.equals("")&& usedDay.equals(""))//第一次试用
    {
    haveDay=aa.Code("2");       //给可试用次数加密码
    usedDay=aa.Code("1");       //给第一次使用数值加密码
    writer=new PrintWriter(new FileWriter("c:\\a.txt"),true);
    //把加密码后的数据写入文件
    writer.print(usedDay);
    writer.print('&');         //在文件里存放一个字符"&",把两数据字符串分开
    writer.println(haveDay);
    }else{                          //多次试用
    // 把读出的数据分别解密码                               
    haveDay=aa.Decode(haveDay);
    usedDay=aa.Decode(usedDay);
    System.out.println("解密haveDay------"+haveDay);
    System.out.println("解密usedDay------"+usedDay);
    if(haveDay.equals(usedDay))
    {
    System.out.println("试用期已到");
    }else{
    int used_day=Integer.parseInt(usedDay);
    int have_day=Integer.parseInt(haveDay);
    writer=new PrintWriter(new FileWriter("c:\\a.txt"),true);
    writer.print(aa.Code(Integer.toString(used_day+1)));//把当前共使用的次数写回文件
    writer.print('&');                 
    writer.println(aa.Code(Integer.toString(have_day)));
    }
    }
    }catch(Exception e){
    e.printStackTrace();
    }这样写不对呀,能列出一些你的观点吗