zoukankan      html  css  js  c++  java
  • 六种方式读取properties资源文件

    conf.properties文件内容:
    reportStationName=xx供电局
    JBM=0318

    文件路径:


    其中xxx为项目名

    import java.io.BufferedInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Properties;
    import java.util.PropertyResourceBundle;
    import java.util.ResourceBundle;

    /**

    • @Author 你的辣条分我点
    • @Date 2019-4-19 下午4:04:04
    • @Version 1.0 业务说明:properties文件读取工具

    */
    public class LoadPropertiesFileUtil {

    private static String webPath = System.getProperty("user.dir");// E:Program Files (x86)workspaceoms
    private static String fileName = "config.properties";
    
    /**
     * 一、 使用java.util.Properties类的load(InputStream in)方法加载properties文件
     * @return
     */
    public static Properties getPropertie1(String basePath) {
    
    	Properties prop = new Properties();
    	try {
    		InputStream in = new BufferedInputStream(new FileInputStream(new File(basePath)));
    		prop.load(in);
    
    	} catch (FileNotFoundException e) {
    		System.out.println("properties文件路径书写有误,请检查!");
    		e.printStackTrace();
    	} catch (IOException e) {
    		e.printStackTrace();
    	}
    
    	return prop;
    }
    
    /**
     * 二、 使用java.util.ResourceBundle类的getBundle()方法
     * 注意:这个getBundle()方法的参数只能写成包路径+properties文件名,否则将抛异常
     * 不需要文件后缀名,如果在src下面,直接写文件名即可(包路径不用写)
     * @return
     */
    public static ResourceBundle getPropertie2(String basePath) {
    	ResourceBundle rb = ResourceBundle.getBundle(basePath);
    	return rb;
    }
    
    /**
     * 三、 使用java.util.PropertyResourceBundle类的构造函数(传入文件流InputStream)
     * @return
     */
    public static ResourceBundle getPropertie3(String basePath) {
    	InputStream in;
    	ResourceBundle rb = null;
    	try {
    		in = new BufferedInputStream(new FileInputStream(basePath));
    		rb = new PropertyResourceBundle(in);
    	} catch (Exception e) {
    		e.printStackTrace();
    	}
    	return rb;
    }
    
    /**
     * 四、 使用class变量的getResourceAsStream()方法
     * 注意:getResourceAsStream()方法的参数按格式写到包路径+properties文件名+.后缀
     * 如果文件在跟目录下,直接写文件.后缀名
     * @return
     */
    public static Properties getPropertie4(String basePath) {
    	InputStream in = LoadPropertiesFileUtil.class.getResourceAsStream(basePath);
    	Properties p = new Properties();
    	try {
    		p.load(in);
    	} catch (IOException e) {
    		e.printStackTrace();
    	}
    	return p;
    }
    
    /**
     * 五、
     * 使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法
     * getResourceAsStream(name)方法的参数必须是包路径+文件名+.后缀 否则会报空指针异常
     */
    public static Properties getPropertie5(String basePath) {
    	InputStream in = LoadPropertiesFileUtil.class.getClassLoader().getResourceAsStream(basePath);
    	Properties p = new Properties();
    	try {
    		p.load(in);
    	} catch (IOException e) {
    		e.printStackTrace();
    	}
    	return p;
    }
    
    /**
     * 六、 使用java.lang.ClassLoader类的getSystemResourceAsStream()静态方法
     * getSystemResourceAsStream()方法的参数格式也是有固定要求的
     */
    public static Properties getPropertie6(String basePath) {
    	InputStream in = ClassLoader.getSystemResourceAsStream(basePath);
    	Properties p = new Properties();
    	try {
    		p.load(in);
    	} catch (IOException e) {
    		e.printStackTrace();
    	}
    	return p;
    }
    
    public static void main(String[] args) {
    	String basePath = webPath + File.separator + "resources" + File.separator + fileName;
    	System.out.println("getPropertie1===>>>>>>" + LoadPropertiesFileUtil.getPropertie1(basePath).getProperty("JBM"));
    	fileName = fileName.substring(0, fileName.lastIndexOf("."));
    	// System.out.println(fileName);//config
    	System.out.println("getPropertie2===>>>>>>" + LoadPropertiesFileUtil.getPropertie2(fileName).getString("JBM"));
    	System.out.println("getPropertie3===>>>>>>" + LoadPropertiesFileUtil.getPropertie3(basePath).getString("JBM"));
    	fileName = "config.properties";
    	System.out.println("getPropertie4===>>>>>>" + LoadPropertiesFileUtil.getPropertie4(fileName).getProperty("JBM"));
    	System.out.println("getPropertie5===>>>>>>"+LoadPropertiesFileUtil.getPropertie5(fileName).getProperty("JBM"));
    	System.out.println("getPropertie6===>>>>>>"+LoadPropertiesFileUtil.getPropertie6(fileName).getProperty("JBM"));
    }
    

    }

    后台打印结果:
    getPropertie1=>>>>>>0318
    getPropertie2
    =>>>>>>0318
    getPropertie3=>>>>>>0318
    getPropertie4
    =>>>>>>0318
    getPropertie5=>>>>>>0318
    getPropertie6
    =>>>>>>0318

  • 相关阅读:
    负载均衡软件LVS 三种实现模式对比
    论文学习笔记:High-level pattern-based classification via tourist
    论文学习笔记:A Network-Based High Level Data Classification
    第四章--度相关性和社团结构(复杂网络学习笔记)
    第三章--网络基本拓扑性质(复杂网络学习笔记)
    第二章--网络与图(复杂网络学习笔记)
    神经网咯基础-deeplearning.ai【笔记】
    前端Jquery-Ajax跨域请求,并携带cookie
    Django中解决跨域请求问题
    1- 基本概念(复杂网络学习笔记)
  • 原文地址:https://www.cnblogs.com/rdchen/p/10748491.html
Copyright © 2011-2022 走看看