为什么没有人回答,请jni的高手帮帮我!万分感谢!

解决方案 »

  1.   

    给你一个我写的例子
    import java.util.*;
    import java.io.*;
    public class xpInifile{
    Vector section = new  Vector();
        Vector keynums = new  Vector();
    Vector key     = new  Vector();
    Vector value   = new  Vector();
    String filename=""; 
    public xpInifile(String filename)
    {
    this.filename =filename;
    load();
    }
    public void test()
    {
    int keypos=0;
         for(int i=0;i<section.size();i++)
          {
           System.out.println("["+(String)section.get(i)+"]");   
           for(int j=keypos;j<((Integer)(keynums.get(i))).intValue()+keypos;j++)
            System.out.println((String)key.get(j)+"="+(String)value.get(j));
            keypos=keypos+((Integer)(keynums.get(i))).intValue();
          }
        }
    //读取ini文件信息
    private void load()
    {
      String readstr="";
      int nums=0;
      int i=0;
      int j=0;
      int keypos=0;
     try
     {
      BufferedReader in = new BufferedReader(new FileReader(filename));
      readstr=in.readLine();
      while(readstr!=null)
      {
       readstr=readstr.trim();
       //找出段
       if(readstr.startsWith("[")==true)
          {
            if(section.size()>0)//得出该段key数量
             { 
               keynums.add(new Integer(nums));
               nums=0;
             } 
            section.add(readstr.substring(1,readstr.indexOf("]")));
          }
        else
         {
          key.add(readstr.substring(0,readstr.indexOf("=")));
          value.add(readstr.substring(readstr.indexOf("=")+1));
          nums=nums+1;
         }   
       readstr = in.readLine();
     }
      in.close();
      keynums.add(new Integer(nums));
         //测试代码
    /*   for(i=0;i<section.size();i++)
          {
           System.out.println("["+(String)section.get(i)+"]");   
           for(j=keypos;j<((Integer)(keynums.get(i))).intValue()+keypos;j++)
            System.out.println((String)key.get(j)+"="+(String)value.get(j));
            keypos=keypos+((Integer)(keynums.get(i))).intValue();
          } 
    */      
     }
     catch(Exception e)
     {
      System.out.println(e.getMessage());
     }   
    }
    //得到某key值
        public String getvalue(String sectionname,String keyname)
         {
          String pvalue="";
          int i=0;
          int j=0;
          int sectionpos=-1;
          int startpos=0;
          int endpos=0;
          try
          {
            sectionpos=section.indexOf(sectionname.trim());
            if(sectionpos!=-1)
            {
             for(i=0;i<sectionpos;i++)
             startpos=startpos+((Integer)keynums.get(i)).intValue();
             endpos=startpos+((Integer)keynums.get(i)).intValue();
            for(j=startpos;j<endpos;j++) 
            {
             if(((String)key.get(j)).trim().equals(keyname.trim())==true)
               {
                pvalue = ((String)value.get(j)).trim();
                break;
               } 
            }
            }
            }
            catch(Exception e)
            {
             System.out.println(e.getMessage());
            }
            
           return pvalue;
         }
        public boolean setvalue(String sectionname,String keyname,String value)
        {
          boolean presult=false;
          int i=0;
          int j=0;
          int sectionpos=-1;
          int startpos=0;
          int endpos=0;
          int m=0;
          int n=0;
          int keypos=0;
          try
          {
          try
          {
            sectionpos=section.indexOf(sectionname.trim());
            if(sectionpos!=-1)
            for(i=0;i<sectionpos;i++)
             startpos=startpos+((Integer)keynums.get(i)).intValue();
             endpos=startpos+((Integer)keynums.get(i)).intValue();
            for(j=startpos;j<endpos;j++) 
            {
             if(((String)key.get(j)).trim().equals(keyname.trim())==true)
               {
                this.value.setElementAt(value.trim(),j);
                   BufferedWriter out = new BufferedWriter(new FileWriter(filename));
                   //回写
                   //test();
                  for(m=0;m<section.size();m++)
                    {
                      out.write("["+(String)section.get(m)+"]"+"\n");   
                      for(n=keypos;n<((Integer)(keynums.get(m))).intValue()+keypos;n++)
                      out.write((String)key.get(n)+"="+(String)this.value.get(n)+"\n");
                      keypos=keypos+((Integer)(keynums.get(m))).intValue();
                    } 
                    out.close();            
                presult =true;
                break;
               } 
            }
            }
            catch(Exception e)
            {
             System.out.println(e.getMessage());
             presult=false;
            }
        }
        finally
        {
         return presult;
        }
        }  
    }