Java Propertiesクラスプロファイル情報の読み取りと変更
私たちが普段プログラムを書くとき、いくつかのパラメータはよく変化しますが、このような変化は私たちが予知していません.例えば、私たちは操作データベースのモジュールを開発しました.開発時にローカルのデータベースに接続すると、IP、データベース名、テーブル名、データベースホストなどの情報がローカルになります.この操作データのモジュールに汎用性を持たせるには、情報をプログラムに書くことはできません.通常、プロファイルで解決します.各言語には、サポートされているプロファイルタイプがあります.例えばPython、彼は支持しています.iniファイル.彼の内部にはnfigParserクラスがあるからだ.iniファイルの読み書きは、このクラスが提供する方法に従ってプログラマーが自由に操作することができる.iniファイル.JavaではJavaがサポートする.propertiesファイルの読み書き.JDK内蔵java.util.Propertiesクラスは私たちのために操作します.propertiesファイルは便利です.
サーバ、データベース情報
dbPort = localhost
databaseName = mydb
dbUserName = root
dbPassword = root
#次はデータベーステーブル情報
dbTable = mytable
#以下はサーバ情報
ip = 192.168.0.9
······
上のファイルでは、ファイル名をtestと仮定します.propertiesファイル.#の最初の動作コメント情報;等号「=」の左側にある私たちはkeyと呼ばれています.等号「=」の右側の私たちはvalueと呼ばれています.(実は私たちがよく言うキー-値ペア)keyは私たちのプログラムの変数であるべきです.valueは実際の状況に基づいて構成されています
以下はpropertiesファイルを操作するツールクラスです.
サーバ、データベース情報
dbPort = localhost
databaseName = mydb
dbUserName = root
dbPassword = root
#次はデータベーステーブル情報
dbTable = mytable
#以下はサーバ情報
ip = 192.168.0.9
······
上のファイルでは、ファイル名をtestと仮定します.propertiesファイル.#の最初の動作コメント情報;等号「=」の左側にある私たちはkeyと呼ばれています.等号「=」の右側の私たちはvalueと呼ばれています.(実は私たちがよく言うキー-値ペア)keyは私たちのプログラムの変数であるべきです.valueは実際の状況に基づいて構成されています
以下はpropertiesファイルを操作するツールクラスです.
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;
/**
* Java Property
* @author xiewanzhi
* @date 2011-4-7 09:19:03
* @version 1.0
*/
public class PropertiesConfig {
/**
* KEY,
* @param filePath , , :java/util/config.properties
* @param key
* @return key
*/
public static String readData(String filePath, String key) {
//
filePath = PropertiesConfig.class.getResource("/" + filePath).toString();
// ”file:“
filePath = filePath.substring(6);
Properties props = new Properties();
try {
InputStream in = new BufferedInputStream(new FileInputStream(filePath));
props.load(in);
in.close();
String value = props.getProperty(key);
return value;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* key , , , 。
* @param filePath , , :java/util/config.properties
* @param key
* @param value
*/
public static void writeData(String filePath, String key, String value) {
//
filePath = PropertiesConfig.class.getResource("/" + filePath).toString();
// ”file:/“
filePath = filePath.substring(6);
Properties prop = new Properties();
try {
File file = new File(filePath);
if (!file.exists())
file.createNewFile();
InputStream fis = new FileInputStream(file);
prop.load(fis);
// fis
fis.close();
OutputStream fos = new FileOutputStream(filePath);
prop.setProperty(key, value);
// ,
prop.store(fos, "Update '" + key + "' value");
fos.close();
} catch (IOException e) {
System.err.println("Visit " + filePath + " for updating " + value + " value error");
}
}
public static void main(String[] args) {
System.out.println(PropertiesConfig.readData("com/xiewanzhi/property/config.properties", "port"));
// PropertiesConfig.writeData("com/xiewanzhi/property/config.properties", "port", "12345");
}
}