java配置文件的格式–xml和properties – 记忆角落

java配置文件的格式–xml和properties

/ 2评 / 3

最近在开发中用的比较多的是xml和properties这两种配置的格式文件,而yml暂时我还真的很少用,就学习spring Boot的时候用过,在现在公司开发小的工具程序都基本上用xml和properties。

但是现在感觉自己更倾向于用properties,但最近也还是在用xml写小程序,可能是习惯来得快?

接下来就写一下xml和properties的区别?也算是2018年最后一篇文章日志了,感谢现在努力的自己

格式写法?

xxx.xml文件格式

xxx.properties文件格式

从这两种图,可以看出xml的结构比properties清晰(yml也是),而properties文件要比.xml文件结构要简单一些。

可能是xml采用树形结构,而properties采用的是键值对的形式?


下面写下读取这配置文件内容的代码吧(代码比较乱勿喷)

package com.glj.util;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;

import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;

public class ConfigUtil {
	private static final Logger log = Logger.getLogger(ConfigUtil.class);
	private static Properties prop = null;
	
	public ConfigUtil(InputStream is) {
		prop = new Properties();
        try{
        	BufferedInputStream bis = new BufferedInputStream(is);
        	InputStream in = bis;
        	prop.load(in);
        }catch (Exception e){
        	log.error("读取"+prop+"配置文件错误!",e);
        }
    }
	
	public static void init(String cfgPath) {
		String realPath = "";
		if(StringUtils.isNotBlank(cfgPath) && new File(cfgPath).exists()) {
			realPath = cfgPath;
		}else {
			String defExistsPath = ClassLoader.getSystemResource("").getPath()+"cfg.properties";
			realPath = new File(defExistsPath).exists()? defExistsPath: "";;
		}
		try{
			InputStream is = StringUtils.isNotBlank(realPath)? new FileInputStream(realPath): 
				ConfigUtil.class.getClassLoader().getResourceAsStream("cfg.properties");
			log.info("读取配置文件:"+realPath);
			new ConfigUtil(is);
		} catch (IOException e1) {
			log.error("读取配置文件出错");
		}
	}
	
	public static String getProperty(String propertyName) {
		if(prop == null) {
			ConfigUtil.init("");
		}
		if("".equals(propertyName) || null==propertyName) {
			return "";
		}
		return prop.getProperty(propertyName);
	}
	public static void main(String[] args) {
//		String path = ClassLoader.getSystemResource("").getPath()+"log4j.properties";
//		ConfigUtil.init(path);
//		System.out.println(ConfigUtil.getProperty("log4j.rootLogger"));
		System.out.println(ConfigUtil.getProperty("mysql.className"));
		
	}
}

更多的方法可以到这个链接学习:https://www.cnblogs.com/lingyao/p/5708929.html

package com.glj.util;

import java.util.Map;
import org.dom4j.Document;
/**
 * Xml文件操作接口
 * @author Jiomer
 *
 */
public interface XmlSupport {
	/**
	 * 创建xml文件
	 * @return
	 */
	public Document createDocument();
	
	/**
	 * 读xml文件
	 * @param file
	 * @return
	 * @throws Exception
	 */
	public Map readDocument(String file)throws Exception;
	
	/**
	 * 写xml文件
	 * @throws Exception
	 */
	public void writerDocument() throws Exception;
	/**
	 * 更新xml文件
	 */
	public void updateDocument() ;	
}

package com.glj.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class XmlSupportImpl implements XmlSupport {

	public Document createDocument() {
		// TODO Auto-generated method stub
		Document document = DocumentHelper.createDocument();
		Element rootElement = document.addElement("root");

		Element uploadFileElement = rootElement.addElement("uploadFile");

		Element path = uploadFileElement.addElement("path");
		path.setText("/Upload/");
		Element size = uploadFileElement.addElement("size");
		size.setText("10240");
		Element type = uploadFileElement.addElement("type");
		type.setText("zip,rar,png,jpg,gif");

		return document;
	}

	public void writerDocument() throws Exception {
		

	}

	public Map  readDocument(String file) throws Exception{
		// TODO Auto-generated method stub
		Map map = new HashMap();
		SAXReader saxReader =  new SAXReader();
		
		/**
		 *  先读入整份XML文档
		 */
		Document document = saxReader.read(new FileInputStream(new File(file)));
		Element root = document.getRootElement();
		List list = root.elements();
		for(int i=0;i<list.size();i++){
			Element ele = (Element) list.get(i);
			map.put(ele.getName(), ele.getText());
		}
		return map;
	}

	public void updateDocument() {
		// TODO Auto-generated method stub
	}
}
package com.glj.util;

import java.io.File;
import java.util.Map;
import org.apache.log4j.Logger;


/**
 * 系统配置类
 * @author Jiomer
 *
 */
public class ConfigureUtil {
		private static Logger logger = Logger.getLogger(ConfigureUtil.class);
	    public static ConfigureUtil instance = null;
	    
	    @SuppressWarnings("rawtypes")
		private Map configureMap = null;

	    public ConfigureUtil() {
	    	
	    	String file = ClassLoader.getSystemResource("").getPath()+"cfg.xml";
	    	System.out.println(file);
	    	logger.info("获取了cfg.xml路径:"+file);
	    	try {
	    		configureMap = new XmlSupportImpl().readDocument(file);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	    }
	    public ConfigureUtil(String isHiber) {
	    	 String file = this.getClass().getResource("/").getPath()+"cfghiber.xml";
	    	try {
	    		configureMap = new XmlSupportImpl().readDocument(file);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	    }

	    public String getValue(String key) {
	    	return (String) configureMap.get(key);
	    }
	    
		public static ConfigureUtil  getInstance(){
			if(null== instance ){
				synchronized(ConfigureUtil.class){
					if(null== instance){
						instance = new ConfigureUtil ();
					}
				}
			}
			return instance;
		}
	    public static void main(String[] args) {
//	    	System.out.println(new ConfigureUtil().getValue("driverURL"));
		}

}

end...


2条回应:“java配置文件的格式–xml和properties”

  1. 鸟叔说道:

    看见代码就头大

  2. 森纯博客说道:

    涨姿势了,虽然看不懂

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注