zoukankan      html  css  js  c++  java
  • ClassLoader.getResourceAsStream(name);获取配置文件的方法

    InputStream in = getClass().getResourceAsStream('/'+"spring-beans.dtd"); 表示从classs目录下面的找文件,文件放在src下面就可以了.
    InputStream in = getClass().getResourceAsStream("spring-beans.dtd"); 表示从当前classs下面的路径找文件
    如果是在com.a.b.c.d.Test这个class就表示spring-beans.dtd要放在目录srccomacd下.

    SAXBuilder builder = new SAXBuilder();
    EntityResolver resolver = new EntityResolver() {

    public InputSource resolveEntity(String publicId,
    String systemId) {
    if (publicId.equals("-//SPRING//DTD BEAN//EN")) {
    InputStream in = getClass().getResourceAsStream(
    '/'+"spring-beans.dtd");
    return new InputSource(in);
    } else {
    return null;
    }
    }

    };
    builder.setEntityResolver(resolver);
     
     
     
    (2) 例子
     
    package ccutse.DB;
    import java.util.*;
    import java.net.*;
    import java.io.*;

    public class ReadProp {
    private String user,psw,url,driver;
    private int maxCon,minCon;
    public ReadProp() {

    }


    public static void main(String[] args) {
    ReadProp readprop = new ReadProp();
    InputStream in=null;
    try{
    in=readprop.getClass().getResourceAsStream( "c:\db.properties "); 路径应放在classpath下
    if(in==null)
    System.out.println( "in is null ");
    }
    Properties prop=new Properties();
    try{
    prop.load(in);

    }
    catch(Exception e){
    System.out.println( "装载失败 ");

    }


    }
    }
     

    class.getResourceAsStream 用法

     

     首先,Java中的getResourceAsStream有以下几种 Class.getResourceAsStream(String path) : path 不以’/‘开头时默认是从此类所在的包下取资源,以’/‘开头则是从
      ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。
      2. Class.getClassLoader.getResourceAsStream(String path) :默认则是从ClassPath根下获取,path不能以’/‘开头,最终是由
      ClassLoader获取资源。
      3. ServletContext. getResourceAsStream(String path):默认从WebAPP根目录下取资源,Tomcat下path是否以’/‘开头无所谓,
      当然这和具体的容器实现有关。
      4. Jsp下的application内置对象就是上面的ServletContext的一种实现。
      其次,getResourceAsStream 用法大致有以下几种
      第一: 要加载的文件和.class文件在同一目录下,例如:com.x.y 下有类me.class ,同时有资源文件myfile.xml
      那么,应该有如下代码
      me.class.getResourceAsStream("myfile.xml");
      第二:在me.class目录的子目录下,例如:com.x.y 下有类me.class ,同时在 com.x.y.file 目录下有资源文件myfile.xml
      那么,应该有如下代码
      me.class.getResourceAsStream("file/myfile.xml");
      第三:不在me.class目录下,也不在子目录下,例如:com.x.y 下有类me.class ,同时在 com.x.file 目录下有资源文件myfile.xml
      那么,应该有如下代码
      me.class.getResourceAsStream("/com/x/file/myfile.xml");
      总结一下,可能只是两种写法
      第一:前面有 “ / ”
      “ / ”代表了工程的根目录,例如工程名叫做myproject,“ / ”代表了myproject
      me.class.getResourceAsStream("/com/x/file/myfile.xml");
      第二:前面没有 “ / ”
      代表当前类的目录
      me.class.getResourceAsStream("myfile.xml");
      me.class.getResourceAsStream("file/myfile.xml");

  • 相关阅读:
    codeforces 459 C. Pashmak and Buses(思维)
    poj 2763 Housewife Wind(树链剖分+单点查询+区间修改)
    codeforces E. Phone Talks(dp)
    BZOJ 1036: [ZJOI2008]树的统计Count(树链剖分+单点更新+区间求和+区间求最大值)
    SPOJ
    hdu 3966 Aragorn's Story(树链剖分+区间修改+单点查询)
    codeforces H. Queries for Number of Palindromes(区间dp)
    codeforces 245 D. Restoring Table(位运算+思维)
    codeforces 402 D. Upgrading Array(数论+贪心)
    codeforces 793 D. Presents in Bankopolis(记忆化搜索)
  • 原文地址:https://www.cnblogs.com/sharpest/p/7720059.html
Copyright © 2011-2022 走看看