`
雨过天晴0521
  • 浏览: 159386 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java如何更新properties的多个值

    博客分类:
  • java
 
阅读更多
这个例子用使用了propertie的store方法, 他的优点是简单, 不用自己实现IO,但缺点是回丢失注释和原文件的顺序.如果希望保证顺序,请参考 [转]一个保证store内容顺序不变的properties实现http://ygtq0521.iteye.com/blog/1278081

import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

/**
 * Created by IntelliJ IDEA.
 * User: Michael
 * Date: 10/31/11
 * Time: 2:23 PM
 * To change this template use File | Settings | File Templates.
 */
public class UpdateProperties {
    private String pathSeparator = getPathSeparator();


    public static void main(String[] args){

        try{
            String str1 = "/root/yangxm/sf/DSEngine/work/classpath_3.1.3.tra";
            String str2 = "/root/yangxm/sf/DSEngine/work/sandbox-1304059787-0/bin";
            String str3 = "/root/yangxm/sf/DSEngine/work/sandbox-1304059787-0/lib";
 
            File traFile = new File(str1);

            if(!traFile.exists()){
                System.out.println(" tra file not found in dir ...");
            }else{
                new UpdateProperties().runMain(str1);

            }
        }catch (IOException e){
            System.out.println(e);
            // replace logger
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public  void runMain(String str1, String str2, String str3) throws Exception{

        Properties prop = getTraFile(str1);
        String[] targetVars = {
           "env1.PATH",
           "env2.LD_LIBRARY_PATH", 
           "env3.SHLIB_PATH", 
           "env4.LIBPATH"};

        Map env = getTraFileValue(prop, targetVars);
        Map newEnv = prepareNewEnv(env, str2, str3);
        Properties trafile = updateTraFileValue(prop, newEnv);
        store(trafile, str1, null);
   
    }

    public Properties getTraFile(String properties) throws Exception{
          FileInputStream fis = new FileInputStream(new File(properties));
          Properties nodeTra = new Properties();
          nodeTra.load(fis);
          return nodeTra;
    }


     public String getTraFileValue(Properties prop, String key){
            return prop.getProperty(key);
     }

     public Map<String, String> getTraFileValue(Properties prop, String[] keys){
            HashMap<String, String> env = new HashMap<String, String>();
            for(String key: keys){
                env.put(key, getTraFileValue(prop, key));
            }
            return env;
     }

  

     public boolean isUsingJRE64(Map<String, String> env){
            boolean flag = false;
            if(env.get("tibco.env.PATH").contains("tibcojre64")) {
                flag = true;
            }
                return flag;
     }

     public Map<String, String> prepareNewEnv(Map<String, String> env, String binPath, String libPath){
            Map<String, String> newEnv = new HashMap<String, String>();
            for(String key: env.keySet()){
                 if(key.equals("tibco.env.PATH")){
                    newEnv.put(key, appendNewValue(env.get(key), binPath));
                 }else if(isUsingJRE64(env)){
                    newEnv.put(key, appendNewValue(env.get(key), libPath + "/64" +
                    getPathSeparator() + libPath));
                 }else {
                    newEnv.put(key, appendNewValue(env.get(key), libPath));
                 }
            }
            return newEnv;
     }

     public String appendNewValue(String initValue, String newValue){
            StringBuffer sb = new StringBuffer();
            sb.append(newValue).append(pathSeparator).append(initValue);
            return sb.toString();
     }

 

     public void store(Properties traFile, File file, String comments) throws Exception{
            FileOutputStream fos = new FileOutputStream(file);
            traFile.store(fos, comments);
     }

     public void store(Properties traFile, String filePath, String comments) throws Exception{
            File file = new File(filePath);
            store(traFile, file, comments);
     }

     public Properties updateTraFileValue(Properties prop, String key, String value){
            prop.setProperty(key, value);
            return  prop;
     }

     public Properties updateTraFileValue(Properties prop, Map<String, String> map){
            for(String key: map.keySet()){
                updateTraFileValue(prop, key, map.get(key));
            }
            return  prop;
     }



     private String getPathSeparator(){
            pathSeparator = System.getProperty("path.separator");
            return pathSeparator;
     }




}
分享到:
评论

相关推荐

    java 读取properties文件代码

    4. **处理国际化(i18n)**:Properties文件还可以用于实现多语言支持。为不同语言创建不同的Properties文件(如`messages_en.properties`、`messages_fr.properties`),然后根据用户的语言环境加载相应的文件。 5...

    java实现properties文件读取

    Java的Properties文件还支持国际化,可以为不同语言创建多个文件,如`messages_en.properties`(英语)和`messages_fr.properties`(法语)。使用`ResourceBundle`类可以轻松地切换不同语言的配置。 5. **保存修改...

    java 动态修改Properties,src下或者指定路径

    1. 首先,创建一个`Properties`对象,这个对象是Java用来处理Properties文件的核心类。 2. 使用`FileInputStream`打开并加载Properties文件。这里,`fis`(FileInputStream)用于读取文件内容。 3. 如果文件不存在,...

    java properties文件中文转化

    总之,Java Properties文件中文转化是一个常见的编程问题,涉及到字符编码、Unicode转义等概念。通过理解这些基础知识并利用适当的工具或库,我们可以确保Java程序正确地处理和显示中文内容,从而提升软件的国际化...

    java对properties配置文件的读和写

    在Java编程中,`properties`文件是用于存储应用程序配置信息的一种简单文本格式。这些文件通常包含键值对,其中键和值之间...同时,考虑到配置文件可能会被多个线程访问,要注意使用适当的同步机制,以防止数据不一致。

    java读取properties配置文件

    一个标准的`.properties`文件通常包含多个行,每行由一个键和一个值组成,它们之间用等号(`=`)或冒号(`:`)分隔。例如: ``` database.url=jdbc:mysql://localhost:3306/mydb database.username=root database....

    java properties应用案例

    Java Properties是Java语言中用于处理配置文件的一个内置类,它主要负责存储键值对的数据,广泛应用于各种配置文件,如数据库连接配置、系统环境变量设置等。Properties类提供了读取和写入.properties文件的能力,...

    (转)java读取properties文件

    在Java编程中,读取`properties`文件是一个常见的任务,这些文件通常用于存储应用程序的配置信息,如数据库连接字符串、系统参数等。本篇将详细讲解如何在Java中读取`properties`文件,并通过提供的`...

    Java读取Properties文件的六种方法

    通过创建一个输入流,然后利用 `Properties` 对象的 `load()` 方法加载数据。 ```java import java.io.FileInputStream; import java.io.InputStream; import java.util.Properties; public class ReadProperties {...

    Java源码读写Properties文件.rar

    压缩包中的“读写Properties文件”可能是包含一个或多个Java源文件,演示了如何使用上述方法读取和写入Properties文件。你可以通过查看这些源码来更好地理解如何实际操作Properties文件。 总结来说,Java中的...

    引入多个properties时.txt

    如果多个`properties`文件中定义了相同的属性,那么后加载的文件中的值会覆盖前面文件中的值。例如,如果`res.properties`中也定义了一个`driver`属性,那么它将会覆盖`jdbc.properties`中的`driver`属性值。 **...

    Properties 文件比较工具

    本项目提供了一个专门的“Properties文件比较工具”,它采用Java语言编写,能够帮助开发者快速检查和对比两个properties文件之间的差异,从而确保配置的一致性和正确性。 在Java中,`java.util.Properties`类是处理...

    Java中Properties类的操作实例详解

    Java中Properties类是Java.util包中的一个重要类,主要用于读取Java的配置文件。Properties类继承自Hashtable,提供了几个主要的方法,包括getProperty、load、setProperty、store和clear等。 一、Java Properties...

    java完美公共方法读取properties文件的值

    ### Java完美公共方法读取properties文件的值 在Java开发中,经常需要处理配置文件,其中`properties`文件因其简单易用的特点而被广泛采用。本文将详细介绍如何使用一种高效且简洁的方式读取`properties`文件,并在...

    java获取properties属性文件示例

    它会在`Properties`对象中创建或更新一个键值对,其中键和值都是`String`类型。 4. **`getProperty(String key)`**: 这个方法用于获取指定键的值。如果键不存在,它会返回`null`。 5. **`propertyNames()`**: 返回...

    jrc editor 2.0.0 中文版 Java Properties

    它允许用户同时打开并编辑多个语言版本的Properties文件,提高工作效率,确保所有语言版本的一致性。 该编辑器的主要特性可能包括: 1. **多文件编辑**:支持同时打开和编辑多个Properties文件,这对于处理大量...

    java Properties文件key,value读取

    Java Properties文件支持国际化(i18n),可以通过不同的语言版本来提供多语言的配置。例如,可以有`config_en.properties`(英语)、`config_fr.properties`(法语)等,根据系统设置的语言环境自动选择合适的文件...

    java读取.properties配置文件的几种方法

    在这个例子中,我们首先创建一个`Properties`对象,然后通过`FileInputStream`打开配置文件,使用`load()`方法加载属性,最后用`getProperty()`获取指定键的值。 2. 使用`ResourceBundle`类 `ResourceBundle`类...

    java对properties文件的操作

    首先,`Properties`是Java中的一个类,位于`java.util`包下,它专门用来处理属性列表,这些属性可以是从流中加载或保存到流中。`Properties`类继承了`Hashtable`,因此具备键值对存储的基本功能,同时增加了对属性...

    java对properties文件的操作.pdf

    Java中的Properties类是用于处理属性列表的,这些属性列表通常存储在.properties文件中,用于配置应用或存储可本地化的文本。下面将详细讲解如何在Java中操作这些.properties文件。 1. **资源文件的位置** 属性...

Global site tag (gtag.js) - Google Analytics