读取配置文件

Class类中的InputStream getResourceAsStream(String name):查找具有给定名称的资源。 用于搜索与给定类相关联的资源的规则由类的定义类加载器实现。 此方法委托给该对象的类加载器。 如果此对象由引导类加载器加载,则该方法委托到ClassLoader.getSystemResourceAsStream(java.lang.String).
读取配置文件代码如下:

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
class AppConfig
{
    public void readApp() throws IOException
    {
        Properties p = new Properties();
        InputStream fis = null;
        fis = AppConfig.class.getResourceAsStream("fffonfig.properties");
        if (fis == null)
        {
            System.out.println("读取文件出错!");
            System.exit(0);
        }
        p.load(fis);
        String param1 = p.getProperty("param1");
        String param2 = p.getProperty("param2");
        System.out.println("param1"+param1+"param2"+param2);


    }
}
public class SingleTest {
    public static void main(String[] args) throws IOException
    {
        AppConfig ac = new AppConfig();
        ac.readApp();
    }
}

配置文件(fffonfig.properties)的路径与Java源文件对应的.class的路径应该在同一个包下,运行结果如下:
param11param22
读取配置文件注意事项:http://www.cnblogs.com/linjiqin/archive/2011/02/14/1954647.html
getResourceAsStream读取的文件路径只局限在工程的源文件夹中,包括在工程src根目录下,以及类包里面任何位置,但是如果配置文件路径是在除了源文件夹之外的其他文件夹中时,该方法是用不了的,会引起空指针异常。
使用枚举实现单例模式,单元素的枚举类型已经成为实现Singleton模式的最佳方法。代码如下:

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
enum  AppConfig
{

        ac;
        private String paramA;
        private String paramB;
        public void readConfig()
        {
            Properties p =new Properties();
            InputStream is = null;
            is = AppConfig.class.getResourceAsStream("fffonfig.properties");
            try
            {
                p.load(is);
                this.paramA = p.getProperty("param1");
                this.paramB = p.getProperty("param2");

            } catch(IOException ie)
            {
                ie.printStackTrace();
            }finally
            {
                try
                {
                    is.close();
                } catch(IOException ie)
                {
                    ie.printStackTrace();
                }
            }
            System.out.println(paramA+paramB);

        }
}
public class SingleTest {
    public static void main(String[] args) throws IOException
    {
        AppConfig.ac.readConfig();
    }
}

运行结果:12
简单工厂的定义:提供一个创建对象实例的功能,而无需关心其具体实现。被创建实例的类型可以是接口,抽象类,也可以是具体的类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

helloworddm

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值