a.properties 文件在解析时,按照map键值对的形式处理的,要给system.version赋值,直接put就是了

解决方案 »

  1.   

    要找到这个system.version的位置。你可以用缓冲字符流读properties文件,然后readLine,如果字符串equals("system.version"), replace一下("system.version", "system.version=xxxx");
      

  2.   

    不就是properties文件的操作吗,直接用java.util.Properties。//把你的a.properties文件load进来
    Properties properties=new Properties();
    InputStream is=new FileInputStream("a.properties");
    properties.load(is);
    //把你system.version改成你要的
    properties.setProperty("system.version","xxxxx");
    //修改后再保存到a.properties文件中
    OutputStream os=new FileOutputStream("a.properties");
    properties.store(os,null);
    is.close();
    os.close();
      

  3.   

    我现在使用的就是这个方法,但是有几个疑问
    1.它更新之后会自动在第一行增加更新时间:#Mon Dec 02 15:08:35 CST 2013
    请问是否可以去掉?而且如果我原来第一行是注释,它会把原注释覆盖,如果原来不是注释,那么它会挤掉原来的第一行,把更新时间放在第一行~! 这样不行啊~!
    2.它会消除掉原来文件的空行,可以不消除吗?
    3.它会重新排列我原来文件的顺序,我不希望它改变~!
    总之就是  只是希望它仅仅更新 system.version= 后面的内容  其余的都不要变~!
      

  4.   

    因为properties的操作是由hashtable的值进行输出的。注释是可以的去掉的,但是文件的顺序会被改变因为hashtable的是用hash算法排序的并非文件的原内容顺序。它底层就是用io的BufferedWriter将hashtable的值一行一行输出所以原来文件里的空行自然就没了。
    这个没法改变,如果你要全部的原样输出那只能用RandomAccessFile
      

  5.   

    因为properties的操作是由hashtable的值进行输出的。注释是可以的去掉的,但是文件的顺序会被改变因为hashtable的是用hash算法排序的并非文件的原内容顺序。它底层就是用io的BufferedWriter将hashtable的值一行一行输出所以原来文件里的空行自然就没了。
    这个没法改变,如果你要全部的原样输出那只能用RandomAccessFile比如~?
      

  6.   

    因为properties的操作是由hashtable的值进行输出的。注释是可以的去掉的,但是文件的顺序会被改变因为hashtable的是用hash算法排序的并非文件的原内容顺序。它底层就是用io的BufferedWriter将hashtable的值一行一行输出所以原来文件里的空行自然就没了。
    这个没法改变,如果你要全部的原样输出那只能用RandomAccessFile比如~?
    例如测试的a.properties文件内容如下
    b=agsystem.version=1.0sba=gadfRandomAccessFile raf=new RandomAccessFile("a.properties","rw");//读写模式
    String str=null;
    while((str=raf.readLine())!=null){//逐行读取
      if(str.startsWith("system.version=")){//发现system.version开头的
    long pos=raf.getFilePointer();//获取当前的文件指针
    //当读取到system.version的时候指针其实已经是末尾并且有换行符了,所以将指针定位到system.version开头
    pos=pos-str.length()-"\r\n".length();
    raf.seek(pos);
    raf.writeBytes("system.version=10.0");//修改当前行
            raf.close();//关闭
            break;//退出其它行不管了
      }
    }
      

  7.   

    貌似是用java干script干的活。
    jvm表示蛋疼。