• 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");

  • 相关阅读:
    vscode常用插件列表
    使用docker构建supervisor全步骤
    docker删除虚悬镜像(临时镜像文件)
    消息队列的对比
    ECharts使用:this.dom.getContext is not a function
    curl命令行请求
    工作工具清单
    《SQL优化入门》讲座总结
    初始化git库并配置自动部署
    php代码进行跨域请求处理
  • 原文地址:https://www.cnblogs.com/sharpest/p/7720059.html
Copyright © 2020-2023  润新知