您的位置:首页 > 编程语言 > Java开发

enoeht的Java源码系列(3)--处理配置文件

2004-06-23 12:10 736 查看
我们常常会在程序中用到这样的配置文件: Listener = org.kyle.net.svr.sample.SampleListenerImpl ServerAddress = 127.0.0.1 ListeningPort = 80 ListenerTimeout = 120 StatelessService = true LogLevel = ALL LogPath = server.log 在这里提供了一个处理这种配置文件的类的源代码。 package org.kyle.util; import java.io.*; import java.util.*; //加载配置文件,并提供从配置文件中读取各种类型的值的方法 public class Profile { protected Properties applicationProps; protected String m_configurationFilename = null; private boolean m_debug = false; public Profile( boolean debug) { this(); m_debug = debug; } public Profile() { this(System.getProperty("MainConfigFile","Server.cfg")); } public Profile(String configurationFilename) { this.m_configurationFilename = configurationFilename; loadCfg(configurationFilename); } public void loadConfig(String configurationFilename) { if( configurationFilename == null ) { System.exit(-1); } try { applicationProps = new Properties(); FileInputStream in = new FileInputStream(configurationFilename); applicationProps.load(in); in.close(); } catch( IOException ie) { System.exit(-1); } } public void loadConfig() { loadConfig( m_configurationFilename ); } public void saveConfig() { try { FileOutputStream out = new FileOutputStream(m_configurationFilename); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, "8859_1")); synchronized (applicationProps) { Iterator iterator = new TreeSet(applicationProps.keySet()).iterator(); while(iterator.hasNext()) { String key = (String)iterator.next(); writer.write(key + "=" + applicationProps.getProperty(key)); writer.newLine(); } } writer.close(); out.close(); }catch(IOException ie) { System.out.println(ie.toString()); } } public void showConfig() { applicationProps.list(System.out); } public Properties getProperty() { return applicationProps; } String getString(String Section, String key, String Default) { return getString( key, Default); } public String getString(String key, String Default) { String rVal = applicationProps.getProperty(key, Default); return rVal == null ? rVal : rVal.trim(); } public String getString(String key) { String rVal = applicationProps.getProperty(key); return rVal == null ? rVal : rVal.trim(); } public boolean getBoolean(String key, boolean Default) { String rVal = getString(key); // if (rVal == null) return Default; if ("true".equalsIgnoreCase(rVal)) return true; if ("false".equalsIgnoreCase(rVal)) return false; return Default; } public int getInt(String key, int Default) { try{ return getInt(key); }catch(Exception e){ applicationProps.setProperty(key, String.valueOf(Default)); return Default; } } protected int getInt(String key) throws NumberFormatException { String rVal = getString(key); return Integer.parseInt(rVal); } public String getConfigurationFilename() { return m_configurationFilename; } private void loadCfg(String configurationFilename) { if( configurationFilename == null ) { System.out.println("Assigned a null configuration file. Default setting used."); } try { applicationProps = new Properties(); FileInputStream in = new FileInputStream(configurationFilename); applicationProps.load(in); in.close(); } catch( IOException ioe) { System.out.println("Loading configuration from file " + configurationFilename + " failed."); System.out.println("Default setting will be used."); } } } package org.kyle.util; import java.net.*; //调用父类加载配置文件和读取数据,按照配置文件的中的key值读取其value。 public class GenProfile extends Profile { public GenProfile() { super(); buildCachedCrypt(); } public GenProfile( String cfgFileName ) { super( cfgFileName ); buildCachedCrypt(); } public String getListenerImpl() { return getString("Listener", " org.kyle.net.svr.sample.SampleListenerImpl"); } public InetAddress getServerAddress() { try { String svrAddr = getString("ServerAddress",null); if ( svrAddr == null ) return null; return InetAddress.getByName( svrAddr ); } catch( UnknownHostException uhe) { Debug.info(uhe); } return null; } public int getListenAt() { return getInt("ListeningPort", 80); } public int getTimeout() { return getInt("ListenerTimeout", 120); } public boolean statelessService() { return getBoolean("StatelessService", true ); } public String getLogLevel() { return getString("LogLevel","CONFIG"); } public String getLogPath() { return getString("LogPath","server.log"); } } 使用方法: String cfgFile ="server.cfg"; GenProfile m_env = new GenProfile( cfgFile ); 这样在程序中就可以使用例如m_env. getServerAddress()等方法取得配置文件的相应内容了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: