ServletContext_资源文件(资源在classes目录下的某个包中)

/*
如果资源文件在某个包下面
即:读取类路径下面的某个包下面的资源文件
    ClassLoader  loader = ServletContextDemo4.class.getClassLoader();//获取到了装载该类的类装载器(也是装载所有的类的类装载器)
    loader.getResourceAsStream("");//类装载器是用来装载classes目录的,而db.properties
    所以:InputStream in = loader.getResourceAsStream("cn/it/servlet/db.properties");
    
    //使用Properties对象读取properties文件
    Properties pro = new Properties();
    prop.load(in);//将一个流加载到Properties对象中去
    prop.getProperty("name");//通过键获取值
    prop.getProperty("url");
    //。。。。。。。
    
    
    //通过类装载器装载数据的时候装载一个资源文件,如果资源文件过大,超过javaVM的
    默认内存,将会出现内存溢出
    所以用类装载器装载的时候,只能装载小的文件。
    使用类装载器装载的资源文件只装载一次。
    
    
        那么对于大文件如何读取的问题?    (不用类装载器,因为文件太大)
    //获取文件名
    String path = this.getServletContext().getRealPath("/WEB-INF/classes/db.properties");//得到绝对路径
    //截取文件
    path.lastIndexOf(''\\");
    String filename = path.subString(path.lastIndexOf("\\")+1);//拿到文件名
    
    InputStream In = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");//ServletContext代表的是整个web应用,而“/”代表的是web应用
    byte[] buff = new byte[1024];
    int  len = 0;
    FileOutputStream out = new FileOutputStream("e:\\"+filename);
    while((len=in.read(buff))!=-1){
        out.write(buff,0,len);
    }
    in.close();
    out.close();

转载于:https://my.oschina.net/cys21/blog/495967

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值