这个例子用使用了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;
}
}
分享到:
相关推荐
4. **处理国际化(i18n)**:Properties文件还可以用于实现多语言支持。为不同语言创建不同的Properties文件(如`messages_en.properties`、`messages_fr.properties`),然后根据用户的语言环境加载相应的文件。 5...
Java的Properties文件还支持国际化,可以为不同语言创建多个文件,如`messages_en.properties`(英语)和`messages_fr.properties`(法语)。使用`ResourceBundle`类可以轻松地切换不同语言的配置。 5. **保存修改...
1. 首先,创建一个`Properties`对象,这个对象是Java用来处理Properties文件的核心类。 2. 使用`FileInputStream`打开并加载Properties文件。这里,`fis`(FileInputStream)用于读取文件内容。 3. 如果文件不存在,...
总之,Java Properties文件中文转化是一个常见的编程问题,涉及到字符编码、Unicode转义等概念。通过理解这些基础知识并利用适当的工具或库,我们可以确保Java程序正确地处理和显示中文内容,从而提升软件的国际化...
在Java编程中,`properties`文件是用于存储应用程序配置信息的一种简单文本格式。这些文件通常包含键值对,其中键和值之间...同时,考虑到配置文件可能会被多个线程访问,要注意使用适当的同步机制,以防止数据不一致。
一个标准的`.properties`文件通常包含多个行,每行由一个键和一个值组成,它们之间用等号(`=`)或冒号(`:`)分隔。例如: ``` database.url=jdbc:mysql://localhost:3306/mydb database.username=root database....
Java Properties是Java语言中用于处理配置文件的一个内置类,它主要负责存储键值对的数据,广泛应用于各种配置文件,如数据库连接配置、系统环境变量设置等。Properties类提供了读取和写入.properties文件的能力,...
在Java编程中,读取`properties`文件是一个常见的任务,这些文件通常用于存储应用程序的配置信息,如数据库连接字符串、系统参数等。本篇将详细讲解如何在Java中读取`properties`文件,并通过提供的`...
通过创建一个输入流,然后利用 `Properties` 对象的 `load()` 方法加载数据。 ```java import java.io.FileInputStream; import java.io.InputStream; import java.util.Properties; public class ReadProperties {...
压缩包中的“读写Properties文件”可能是包含一个或多个Java源文件,演示了如何使用上述方法读取和写入Properties文件。你可以通过查看这些源码来更好地理解如何实际操作Properties文件。 总结来说,Java中的...
如果多个`properties`文件中定义了相同的属性,那么后加载的文件中的值会覆盖前面文件中的值。例如,如果`res.properties`中也定义了一个`driver`属性,那么它将会覆盖`jdbc.properties`中的`driver`属性值。 **...
本项目提供了一个专门的“Properties文件比较工具”,它采用Java语言编写,能够帮助开发者快速检查和对比两个properties文件之间的差异,从而确保配置的一致性和正确性。 在Java中,`java.util.Properties`类是处理...
Java中Properties类是Java.util包中的一个重要类,主要用于读取Java的配置文件。Properties类继承自Hashtable,提供了几个主要的方法,包括getProperty、load、setProperty、store和clear等。 一、Java Properties...
### Java完美公共方法读取properties文件的值 在Java开发中,经常需要处理配置文件,其中`properties`文件因其简单易用的特点而被广泛采用。本文将详细介绍如何使用一种高效且简洁的方式读取`properties`文件,并在...
它会在`Properties`对象中创建或更新一个键值对,其中键和值都是`String`类型。 4. **`getProperty(String key)`**: 这个方法用于获取指定键的值。如果键不存在,它会返回`null`。 5. **`propertyNames()`**: 返回...
它允许用户同时打开并编辑多个语言版本的Properties文件,提高工作效率,确保所有语言版本的一致性。 该编辑器的主要特性可能包括: 1. **多文件编辑**:支持同时打开和编辑多个Properties文件,这对于处理大量...
Java Properties文件支持国际化(i18n),可以通过不同的语言版本来提供多语言的配置。例如,可以有`config_en.properties`(英语)、`config_fr.properties`(法语)等,根据系统设置的语言环境自动选择合适的文件...
在这个例子中,我们首先创建一个`Properties`对象,然后通过`FileInputStream`打开配置文件,使用`load()`方法加载属性,最后用`getProperty()`获取指定键的值。 2. 使用`ResourceBundle`类 `ResourceBundle`类...
首先,`Properties`是Java中的一个类,位于`java.util`包下,它专门用来处理属性列表,这些属性可以是从流中加载或保存到流中。`Properties`类继承了`Hashtable`,因此具备键值对存储的基本功能,同时增加了对属性...
Java中的Properties类是用于处理属性列表的,这些属性列表通常存储在.properties文件中,用于配置应用或存储可本地化的文本。下面将详细讲解如何在Java中操作这些.properties文件。 1. **资源文件的位置** 属性...