java配置⽂件存放set_JavaProperties类读取配置⽂件⼀. .properties ⽂件的形式
# 以下为服务器、数据库信息
dbPort = localhost
databaseName = mydb
dbUserName = root
dbPassword = root
# 以下为数据库表信息
dbTable = mytable
# 以下为服务器信息
ip = 192.168.0.9
在上⾯的⽂件中我们假设该⽂件名为: test.properties ⽂件。其中 # 开始的⼀⾏为注释信息;在等号“ = ”
左边的我们称之为 key ;等号“ = ”右边的我们称之为 value 。(其实就是我们常说的键 - 值对) key 应该是我们程序中的变量。⽽ value 是我们根据实际情况配置的。
⼆. JDK 中的 Properties 类 Properties 类存在于胞 Java.util 中,该类继承⾃ Hashtable ,它提供了⼏个主要的⽅法:
1. getProperty ( String key) , ⽤指定的键在此属性列表中搜索属性。也就是通过参数 key ,得到 key 所对应的 value。
2. load ( InputStream inStream) ,从输⼊流中读取属性列表(键和元素对)。通过对指定的⽂件(⽐如说上⾯的 test.properties ⽂件)进⾏装载来获取该⽂件中的所有键 - 值对。以供 getProperty ( String key) 来搜索。
3. setProperty ( String key, String value) ,调⽤ Hashtable 的⽅法 put 。他通过调⽤基类的put⽅法来设置 键 - 值对。
4. store ( OutputStream out, String comments) , 以适合使⽤ load ⽅法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写⼊输出流。与 load ⽅法相反,该⽅法将键 - 值对写⼊到指定的⽂件中去。
5. clear () ,清除所有装载的 键 - 值对。该⽅法在基类中提供。
有了以上⼏个⽅法我们就可以对 .properties ⽂件进⾏操作了!
三.代码实例
package configuration;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
/** *//**
* 读取properties⽂件
* @author Qutr
*
*/
public class Configuration
...{
private Properties propertie;
private FileInputStream inputFile;
private FileOutputStream outputFile;
/** *//**
* 初始化Configuration类
*/
public Configuration()
...{
propertie = new Properties();
}
/** *//**
* 初始化Configuration类
* @param filePath 要读取的配置⽂件的路径+名称
*/
public Configuration(String filePath)
...{
propertie = new Properties();
try ...{
inputFile = new FileInputStream(filePath);
propertie.load(inputFile);
inputFile.close();
} catch (FileNotFoundException ex) ...{
System.out.println("读取属性⽂件--->失败!- 原因:⽂件路径错误或者⽂件不存在"); ex.printStackTrace();
} catch (IOException ex) ...{
System.out.println("装载⽂件--->失败!");
ex.printStackTrace();
}
}//end ReadConfigInfo(...)
/** *//**
* 重载函数,得到key的值
* @param key 取得其值的键
* @return key的值
*/
public String getValue(String key)
...{
ainsKey(key))...{
String value = Property(key);//得到某⼀属性的值return value;
}
else
return "";
}//end getValue(...)
/** *//**
* 重载函数,得到key的值
* @param fileName properties⽂件的路径+⽂件名
* @param key 取得其值的键
* @return key的值
*/
public String getValue(String fileName, String key)
...{
try ...{
String value = "";
inputFile = new FileInputStream(fileName);
propertie.load(inputFile);
inputFile.close();
ainsKey(key))...{
value = Property(key);
return value;
}else
return value;
} catch (FileNotFoundException e) ...{
e.printStackTrace();
return "";
} catch (IOException e) ...{
e.printStackTrace();
return "";
} catch (Exception ex) ...{
ex.printStackTrace();
return "";
}
}//end getValue(...)
/** *//**
* 清除properties⽂件中所有的key和其值
*/
public void clear()
...{
propertie.clear();
}//end clear();
/** *//**
* 改变或添加⼀个key的值,当key存在于properties⽂件中时该key的值被value所代替,* 当key不存在时,该key的值是value
* @param key 要存⼊的键
* @param value 要存⼊的值
*/
public void setValue(String key, String value)
...{
propertie.setProperty(key, value);
}//end setValue(...)
/** *//**
* 将更改后的⽂件数据存⼊指定的⽂件中,该⽂件可以事先不存在。
* @param fileName ⽂件路径+⽂件名称
* @param description 对该⽂件的描述
*/
public void saveFile(String fileName, String description)
...{
try ...{
outputFile = new FileOutputStream(fileName);
propertie.store(outputFile, description);
outputFile.close();
} catch (FileNotFoundException e) ...{
e.printStackTrace();
} catch (IOException ioe)...{
ioe.printStackTrace();
}
}//end saveFile(...)
public static void main(String[] args)
...{
Configuration rc = new Configuration("."config"test.properties");//相对路径
java设置环境变量的方法代码String ip = rc.getValue("ipp");//以下读取properties⽂件的值
String host = rc.getValue("host");
String tab = rc.getValue("tab");
System.out.println("ip = " + ip + "ip-test leng = " + "ip-test".length());//以下输出properties读出的值
System.out.println("ip's length = " + ip.length());
System.out.println("host = " + host);
System.out.println("tab = " + tab);
Configuration cf = new Configuration();
String ipp = cf.getValue("."config"test.properties", "ip");
System.out.println("ipp = " + ipp);
/
/ cf.clear();
cf.setValue("min", "999");
cf.setValue("max", "1000");
cf.saveFile("."config"save.perperties", "test");
// Configuration saveCf = new Configuration();
// saveCf.setValue("min", "10");
// saveCf.setValue("max", "1000");
// saveCf.saveFile("."config"save.perperties");
}//end main()
}//end class ReadConfigInfo
四.⼩结 通过上⾯的例⼦不难看出,在Java中操作配置⽂件是⾮常简单的。在⼀个需要⽤到⼤量配置信
息的模块或系统⾥,我们有必要封装⼀个专门的类来共使⽤。通过最后的main函数调⽤,相信⼤家可以看出该类的⽤法。不⾜指出希望⼤家多多指点。
Java properties⽂件的操作
----------------------------------------------------
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论