如何讀寫property文件,保證一定順序

package com.zfsoft.setup.impl;


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Vector;


import com.zfsoft.setup.intil.pojo.DataSourcePojo;
import com.zfsoft.setup.intl.commons.util.DataSourcePropertyFactory;
import com.zfsoft.setup.intl.commons.util.ResponseStatus;
import com.zfsoft.setup.intl.commons.util.SetupGuidCommonOption;


public class OADataSouceImpl extends DataSouce {


@Override
public ResponseStatus saveProperties(DataSourcePojo dataSourcePojo) {
String systemPath = SetupGuidCommonOption.getSystemDataSourcePath(dataSourcePojo.getCurNodeId());
if (this.judgeFileIsExists(systemPath)) {
Properties prop = readpropertyFileAndReplace(systemPath,
dataSourcePojo);
FileOutputStream fos;
try {
fos = new FileOutputStream(systemPath);
prop.store(fos, "sorted props");
} catch (Exception e) {
e.printStackTrace();
}
return ResponseStatus.SUCCESS;
} else {
return ResponseStatus.FILE_IS_NOT_EXISTS;
}
}



/***************************************************************************

* @param filePathAndName
*            文件路徑及名稱 如c:/fqf.properties
* @return
*/
public static Properties readPropertiesFile(String filePathAndName) {
SortedProperties prop = new SortedProperties();
InputStream in = null;
try {
in = new FileInputStream(new File(filePathAndName));
prop.load(in);
return prop;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
}
in = null;
}
}
return null;
}


/***************************************************************************
* 讀取配置文件並進行修改

* @param rPath
* @param dataSourcePojo
* @return
*/
private Properties readpropertyFileAndReplace(String systemPath,
DataSourcePojo dataSourcePojo) {
// 讀取配置文件
Properties prop = readPropertiesFile(systemPath);
prop.setProperty(OA_DATASOURCE_IP, dataSourcePojo.getIpAddress());
prop.setProperty(OA_DATASOURCE_PORT, dataSourcePojo.getPort());
prop.setProperty(OA_DATASOURCE_DBNAME, dataSourcePojo.getDbname());
prop.setProperty(OA_DATASOURCE_USERNAME, dataSourcePojo.getUserId());
prop.setProperty(OA_DATASOURCE_USERPWD, dataSourcePojo.getUserPwd());
return prop;
}


public static void main(String[] args) {
OADataSouceImpl oADataSouceImpl = new OADataSouceImpl();
DataSourcePojo dataSourcePojo = new DataSourcePojo();
dataSourcePojo.setDbname("orcl");
dataSourcePojo.setIpAddress("10.71.32.190");
dataSourcePojo.setPort("1521");
dataSourcePojo.setUserId("9sJ2qag3wxntnCJc87Ymxw==");
dataSourcePojo.setUserPwd("9sJ2qag3wxntnCJc87Ymxw==");
oADataSouceImpl.saveProperties(dataSourcePojo);
}


}




@SuppressWarnings("serial")
class SortedProperties extends Properties {
@SuppressWarnings("unchecked")
public Enumeration keys() {
Enumeration keysEnum = super.keys();
Vector<String> keyList = new Vector<String>();
keyList.add(DataSourcePropertyFactory.OA_DATASOURCE_IP);
keyList.add(DataSourcePropertyFactory.OA_DATASOURCE_PORT);
keyList.add(DataSourcePropertyFactory.OA_DATASOURCE_DBNAME);
keyList.add(DataSourcePropertyFactory.OA_DATASOURCE_USERNAME);
keyList.add(DataSourcePropertyFactory.OA_DATASOURCE_USERPWD);
while (keysEnum.hasMoreElements()) {
String key = (String)keysEnum.nextElement();
if(key.equals(DataSourcePropertyFactory.OA_DATASOURCE_IP) || 
key.equals(DataSourcePropertyFactory.OA_DATASOURCE_PORT)||
key.equals(DataSourcePropertyFactory.OA_DATASOURCE_DBNAME) ||
key.equals(DataSourcePropertyFactory.OA_DATASOURCE_USERNAME)||
key.equals(DataSourcePropertyFactory.OA_DATASOURCE_USERPWD) ){
continue;
}
keyList.add(key);
}
return keyList.elements();
}


}
發佈了62 篇原創文章 · 獲贊 8 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章