`

Web项目的自定义属性配置文件读取- Windows/Linux

 
阅读更多
将这两个类粘贴到项目中:
获得应用程序路径类:
package com.rayoo.util;

import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLDecoder;

import org.apache.log4j.Logger;

public class FileTool {
	private static Logger logger = Logger.getLogger("com.auib.util.FileTool");
	
	public static String getAppPath(){
		//获得应用程序路径
		URL appUrl = FileTool.class.getClassLoader().getResource("");
		String appPath = appUrl.getPath();
		
		if (WINDOWS && appPath.startsWith("/"))
			appPath = appPath.substring(1);
		
		try {
			appPath = URLDecoder.decode(appPath, "UTF-8");
		} 
		catch (UnsupportedEncodingException e) { }
		
		return appPath;
	}
	
	private static final boolean WINDOWS = System.getProperty("os.name").startsWith("Windows");
}


读取配置文件单例类:
package com.rayoo.util;

import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;

/**
 * 读取属性文件的配置参数
 */
public class ServerConfig {
    //private static Logger logger = Logger.getLogger("product run.trns.core.parse.NodeParser");
    // 属性配置
    private static Properties log = null;
    // 单例模式
    private static ServerConfig config = null;
    // 判断当前系统环境
	private static final boolean WINDOWS = System.getProperty("os.name").startsWith("Windows");
	// 私有构造
	private ServerConfig(){ }
	
	// 单例模式初始化
	public static ServerConfig getInstance(){
		if(config == null){
			config = new ServerConfig();
			init();
		}
		return config;
	}
	
	// 初始化函数
	private static void init(){
		if (log == null){
			String configfile = null;
			if(WINDOWS)
				configfile = "server-config-w.properties";
			else
				configfile = "server-config-l.properties";
			
			String appPath = FileTool.getAppPath();
			File file = new File(appPath);
			appPath = file.getParent();
			String configPath = appPath;
			appPath= appPath + File.separator + configfile;
			file = new File(appPath);	
			FileInputStream fis = null;
			try{
				if (!file.exists()){
					System.out.println("配置文件不存在");
					System.exit(-1);
				}

				fis = new FileInputStream(file);
				log = new Properties();
				log.load(fis);
				log.setProperty("ConfigPath", configPath);
				fis.close();
			}
			catch(Exception e){
				//logger.error("config::init::cann't load log file" + e.getMessage());
				System.exit(-1);
			}
		}
	}
	
	
	public Properties getWorkInfo(){
		return log;
	}
	
	public String getProperty(String key){
		return log.getProperty(key);
	}
	
	/*
	public synchronized void writeLog(String key, String value) throws Exception{
		setProperty(key, value);
		try{
			save();
			
		}
		catch(Exception e){
			throw new Exception(e.getMessage());
		}
	}
	*/
	/*
	private void setProperty(String key, String value){
		log.setProperty(key, value);
	}
	
	private void save() throws Exception{
		FileOutputStream fos = null;
		try{
			fos = new FileOutputStream(file);
			log.store(fos, "");
			fos.close();
		}
		catch(Exception e){
			throw new Exception(e.getMessage());
		}
	}
	*/
	
	
}


将windows和linux配置文件放到WEB-INF目录下:
windows环境文件:
server-config-w.properties
linux环境配置文件:
server-config-l.properties

获取属性值的代码:
String value = ServerConfig.getInstance().getProperty("key");


或:只要配置的属性文件在类路径下,则可通过如下代码获取:
String configFile = "server-config.properties";
InputStream is = JdbcUtilSingleton.class.getClassLoader().getResourceAsStream(configFile);
Properties props = new Properties();
props.load(is);


获得属性文件的绝对路径:
File iniFile = new File(Holiday.class.getClassLoader().getResource("holiday.properties").getPath());
分享到:
评论
1 楼 虎踞龙盘忆江南 2012-08-30  
你有个地方写的有点问题!
            appPath = file.getParent(); 
            String configPath = appPath;
改为:     

            String appPathParent = file.getParent();
    String configPath = appPathParent;

相关推荐

    logstash-8.2.3-linux-x86_64.tar.gz

    正确的方法是使用 `tar -zxvf logstash-8.2.3-linux-x86_64.tar.gz`,这会创建一个名为 "logstash-8.2.3" 的目录,包含所有 Logstash 的执行文件和配置文件。 Logstash 主要由三个主要组件构成: 1. **Inputs**:...

    windows/linux系统centos/php在线浏览文档

    在IT领域,Windows和Linux系统是两种广泛使用的操作系统,它们各有优势且在不同的场景下有其独特的应用。CentOS作为Linux发行版中的一个热门选择,因其稳定性和安全性而备受青睐。PHP是一种流行的服务器端脚本语言,...

    理解 Linux 配置文件

    ### 理解 Linux 配置文件:关键知识点解析 #### 一、引言 Linux 系统以其高度可定制性...随着对 Linux 系统深入了解,用户可以更加熟练地利用配置文件来优化系统性能,增强安全性,甚至自定义系统行为以满足特定需求。

    reading-code-of-nginx-1.9.2_y123456yz.tar.gz

    7. **配置解析**:Nginx的配置文件解析由`ngx_conf_file`模块完成,`ngx_conf_parse`函数逐行读取配置并解析。 三、源码注释与学习方法 该压缩包包含详尽的函数中文注释,这对于初学者来说是一份宝贵的资源。学习...

    linux安装日记-web服务器搭建

    Nginx的配置文件通常位于`/etc/nginx/nginx.conf`,但每个站点的配置文件可能在`/etc/nginx/sites-available`目录下。创建一个新的配置文件,例如`my_website.conf`,并启用它: ``` sudo nano /etc/nginx/sites-...

    kettle5.3连接hdfs、hbase、kettle5.2源码编译

    2. 配置文件复制:将 `/usr/lib/ictbase/conf/hbase-site.xml` 文件复制到 `data-integration/plugins/pentaho-big-data-plugin/hadoop-configurations/hdp21`。 3. 清理 lib 目录:删除 `data-integration/plugins/...

    filebeat-7.6.0-linux-x86_64.tar.gz

    "filebeat-7.6.0-linux-x86_64.tar.gz"这个压缩包包含了适用于Linux x86_64架构的Filebeat 7.6.0版本。安装过程通常包括解压、配置和启动三个步骤: - 解压:`tar -zxvf filebeat-7.6.0-linux-x86_64.tar.gz` - ...

    使用iPXE实现 Linux系统通过 PXE 启动并且完成自动安装 精品资源 方案已经过验证

    3. **配置启动选项**:在iPXE启动脚本中,需指定Preseed文件的位置,这样客户端就能在安装过程中自动读取。 **五、Preseed文件示例** 以下是一个简单的Preseed文件示例,包含了语言选择、国家设置、键盘布局以及...

    zabbix监控IO

    通过上述步骤,我们可以利用Zabbix实现对Linux系统的磁盘IO进行全面监控,不仅能够快速发现性能问题,还能够通过自定义的图表来直观地展示磁盘IO的变化趋势。这对于提高系统的稳定性和性能具有重要意义。在实际应用...

    linux 下apache-activemq.zip

    配置文件位于`/opt/apache-activemq-5.x.x/conf`目录下,主要关注`activemq.xml`。这个文件定义了ActiveMQ的核心配置,包括消息存储、网络连接等。根据需求,你可以调整这些设置以优化性能或安全性。 3. **启动和...

    nodejs_win64和Linux64两个平台的安装包V6.10.2.rar

    首先,你需要使用 `xz` 工具解压文件(如 `tar xJvf node-v6.10.2-linux-x64.tar.xz`),然后将解压后的目录移动到 `/usr/local` 或自定义路径,并设置环境变量,使得系统可以在任何地方执行 Node.js 和 npm 命令。...

    Linux简明教程.rar

    2.Windows linux双系统 3.只安装 Ubuntu 4.硬盘安装 四、硬件驱动的安装--------------------------------------------------------------------------------- Linux的初体验----------------------------------...

    Beanstalk 队列服务器控制台 Aurora-Console.zip

    macOS/Linux/Windows 32/64-bit- 单文件简单易部署- 不依赖其他组件- 支持读取配置文件方式启动 登陆用户认证- 定时刷新 Beanstalk 队列服务器状态- 对每个 Tube 的 ready/delayed/buried 状态进行管理- 支持批量...

    Linux面试宝典大全+答案

    #### 二、Linux内核引导时从`/etc/fstab`中读取要加载的文件系统 - **文件用途**:`/etc/fstab`文件用于定义在系统启动时自动挂载的文件系统。 - **格式**: - 第一列:要挂载的文件系统(通常是设备名或UUID)。 ...

    linux基础知识 压缩解压等

    `tar`(tape archive)命令用于创建、读取和修改存档文件。它通常用于备份文件或目录以及分发软件包。其基本语法如下: ``` tar [选项] 存档文件 [文件或目录] ``` - **选项**: - `-c` 或 `--create`:创建新...

    项目部署1

    在Eclipse中,右键点击项目,选择`Properties` -> `Java Build Path` -> `Source`,设置输出目录为项目根目录下的自定义路径,例如:`/src/main/webapp/WEB-INF/classes`。 然后,我们需要配置Tomcat的`server.xml`...

Global site tag (gtag.js) - Google Analytics