JavaWeb路径问题

来源:互联网 发布:淘宝滑动验证码 编辑:程序博客网 时间:2024/05/21 22:28

JavaWeb工程中路径问题

1. 遇到的问题

工程结构中无论我把”dp.properties”文件放到哪里,总是读取不到。

这里有一张图

    static {                dbProps = new Properties();        try {            //读取配置文件信息            dbProps.load(new FileInputStream("db.properties"));            //根据配置文件储存的全类名,加载驱动            Class.forName(dbProps.getProperty("driver"));        } catch (FileNotFoundException e1) {            // TODO Auto-generated catch block            e1.printStackTrace();        } catch (IOException e1) {            // TODO Auto-generated catch block            e1.printStackTrace();        } catch (ClassNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }

上面是JDBC代码的加载驱动的一部分,写在静态初始化块中。出现的问题是上面的工程结构图中无论我把”dp.properties”文件放到哪里,第5行代码都会报FileNotFoundException异常,也就是配置文件总是读取不到。

2. 解决办法

  • 方式1
    • 直接用绝对路径,写死。(不推荐此方法)
  • 方式2
    • 通过类加载器ClassLoader的getResourceAsStream()方法返回读取指定资源的输入流。(我的理解是配置文件也会被加载,加载器就会根据文件被加载的位置,来获取文件读取流)

这里有一张图

static {            dbProps = new Properties();        try {        dbProps.load(DBUtil.class.getClassLoader().getResourceAsStream("db.properties"));        Class.forName(dbProps.getProperty("driver"));        } catch (FileNotFoundException e1) {            // TODO Auto-generated catch block            e1.printStackTrace();        } catch (IOException e1) {            // TODO Auto-generated catch block            e1.printStackTrace();        } catch (ClassNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }