import java.util.*;
import java.io.*;
public class Profile extends LinkedHashMap
{
  String filename=null; 
   Profile(String filename)throws FileNotFoundException,IOException
  {
    load(filename);
  } Profile()
  {
  }
 public void load(String filename)
      throws FileNotFoundException,IOException
  {
    this.filename = filename;
    java.io.FileReader fr=new FileReader(filename);
    java.io.BufferedReader br=new BufferedReader(fr);
    String line=null;
    Map group=null;
    while(true)
    {
      line=br.readLine() 
      if(line==null)break;
      String groupName=getGroup(line);
      if(groupName!=null)
      {
        group=new LinkedHashMap();
        this.put(groupName,group);
        continue;
      }      Entry entry=getEntry(line);
      if(group!=null && entry!=null)group.put(entry.name,entry.value);
    }
    fr.close();
  }  public void saveAs(String filename)throws IOException
  {
    this.filename = filename;
    saveProfile();
  }  public void saveProfile()throws IOException
  {
    if(filename==null)return;
    BufferedWriter writer=new BufferedWriter(new java.io.FileWriter(filename));
    for(Iterator i=entrySet().iterator();i.hasNext();)
    {
      Map.Entry group=(Map.Entry)i.next();
      writer.write("[" + group.getKey() + "]\r\n");
      Map map=(Map)group.getvalue() 
      for(Iterator j=map.entrySet().iterator() j.hasNext() )
      {
        Map.Entry entry=(Map.Entry)j.next() 
        writer.write(entry.getKey() + "=" + entry.getvalue() + "\r\n");
      }
      writer.write("\r\n");
    }
    writer.close() 
  }  private String getGroup(String line)
  {
    int start=line.indexOf('[') 
    int end=line.indexOf(']');
    return start<0 | end<=start ? null : line.substring(start + 1,end).trim();
  }  private Entry getEntry(String line)
  {
    int index=line.indexOf('=');
    return index<0 ? null : new Entry(line.substring(0,index).trim(),
                                      line.substring(index + 1));
  }  public String getFilename() {
    return filename;
  }
  public void setFilename(String filename) {
    this.filename = filename;
  }
  private class Entry
  {
    public String name,value;
    public Entry(String name,String value)
    {
      this.name = name;
      this.value = value;
    }
  }  public static void main(String args[])
  {
    try
    {
      Profile profile=new Profile("D:\\test.ini");
      Map group=(Map)profile.get("ss");
      String item=(String)group.get("ss");
      group.put("ss","ss");
      group.remove("ss");
      System.out.println(group) 
      profile.saveProfile();
      profile.saveAs("C:\\test.ini");
    }catch(Exception ex){ex.printStackTrace() }
  }
}

解决方案 »

  1.   

    应该来说System.getProperty(String key)就可以读取出来了
    除非你没有访问这个属性的权限
    但是一般你的程序里面的setProperty(key,value)都可以读取出来
      

  2.   

    System.getProperty(String key)试过读不出来
      

  3.   

    System.getProperty(String key)试过读不出来先setProperty(key,value)一下试一试!
      

  4.   

    try {
                java.lang.Process myproc = Runtime.getRuntime().exec("cmd.exe /c set dbserver");
                InputStream is = myproc.getInputStream();
                byte[] data = new byte[1024*2];
                int i = 0;
                is.read(data,0,1024*2);
                System.out.println(new String(data));
                is.close();
                is = null;
            } catch (IOException e) {
                e.printStackTrace();
            }
      

  5.   

    系统变量,在java1。5里才可以取到的
    应该写成
    java -cp xxx.jar -Ddbserver=testserver xxxxx
    如果一定要用系统环境变量可以
    java -cp xxx.jar -Ddbserver=$dbserver xxxxxx
    然后在java里
    System.getProperty("dbserver");
      

  6.   

    我看还是nhk_csdn(我呢)兄的方法可以值得一试,大体上可以解决问题,也不涉及平台特性。多谢大家。还有人讨论一下吗?明天结贴。