首页 > 编程语言 >Java中getResourceAsStream的用法,读取jar里面的文件

Java中getResourceAsStream的用法,读取jar里面的文件

时间:2023-05-15 13:32:23浏览次数:72  
标签:me xml getResourceAsStream Java jar myfile path class



首先,Java中的getResourceAsStream有以下几种:
1. 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");

最后,自己的理解:
getResourceAsStream读取的文件路径只局限与工程的源文件夹中,包括在工程src根目录下,以及类包里面任何位置,但是如果配置文件路径是在除了源文件夹之外的其他文件夹中时,该方法是用不了的。

标签:me,xml,getResourceAsStream,Java,jar,myfile,path,class
From: https://blog.51cto.com/u_3871599/6277953

相关文章

  • 40+JavaScript进阶单行代码
    数组//生成数组0-99的数组//方案1constcreateArr=(n)=>Array.from(newArray(n),(v,i)=>i);letarr=createArr(100);console.log(arr);//方案2constcreateArr=(n)=>newArray(n).fill(0).map((v,i)=>i)......
  • Java中String.spilt()方法的使用
    1、Java中可以使用String.spilt()方法按照指定的分隔符将字符串进行分割,然后返回字符串。2、测试demo:     ......
  • Linux Centos7系统 设置java jar包开机自启
    #/bin/bashsource/etc/profile#刷新环境变量#定义服务路径webServerPath=/data/web#启动自定义服务(两个)nohupjava-jar$webServerPath/rbpsems-web-2.0.0-SNAPSHOT-boot.jar>$webServerPath/nohup.out2>&1&nohupjava-jar/data/lv/forward-lvfu-0.0.1-SNAPSHOT.jar......
  • Java基础语法(十二):try-catch块
    前言Java异常处理机制是Java程序设计中至关重要的一部分。它允许程序员像处理普通数据一样处理异常,并根据异常类型采取合适的措施。其中一个非常基本的异常处理机制是try-catch块。本文将深入探讨Java中的try-catch块,让读者了解它的各种用法和最佳实践。一、try-catch是什......
  • Java常见操作
    1交换两个变量的操作 eg.  public static void main(String[] args) { int m=10; int n=20; System.out.println("m="+m+",n="+n); //交换两个变量的值的操作 int temp=m; m=n; n=temp; }}2 交换数组中指定两个位置元素的值publuc void swap(i......
  • JavaScript 好书推荐
    javascript好书[^2022_V1]开始[^必学基础-红宝书]新手入门系统学习的书籍一:20年8月出版的[《JavaScript高级程序设计(第4版)》](JavaScript高级程序设计(第4版)(豆瓣)(douban.com))有电子版和纸质版。此书虽然是JS必学之一的红宝书,但章节安排欠佳(比如面对对象章节放于函数章......
  • java~"与运算"实现保留一个数的低8位
    int类型另外介绍int类型的封装类型是Integer类型,它是有符号的类型,即它有负数和正数两部分,最小为-232,最大值是232-1。int类型由32位二进制数组成,每4位二进制数表示为1位16进制数,每8位2进制数占用存储空间为1字节、即每2位16进制也占用1字节一个int类型的数字,占用32/8=4,占用的......
  • 5种你未必知道的JavaScript和CSS交互的方法
    随着浏览器不断的升级改进,CSS和JavaScript之间的界限越来越模糊。本来它们是负责着完全不同的功能,但最终,它们都属于网页前端技术,它们需要相互密切的合作。我们的网页中都有.js文件和.css文件,但这并不意味着CSS和js是独立不能交互的。下面要讲的这五种JavaScript和CSS共同合作的方......
  • Java多线程笔记
    Java多线程基本概念线程是操作系统能够调度的最小单位,他被包含再进程志宏,是进程中的实际运作单位进程进程是程序的基本执行实体并发和并行并发:在同一时刻,有多个指令在单个CPU上交替执行并行在同一时刻,有多个指令在多个CPU上同时执行多线程的实现方式继承Thread类的方式......
  • Java电影订票管理系统
    电影订票系统主要是为了实现电影院的电影信息能够实时的展现上映电影信息以及对顾客能够根据上映电影进行网上购票支付的系统。一个经典的电影订票系统一般都需要提供良好的交互界面页面,但由于还没有学习前端方面的知识,所以交互仍在控制台中。从功能上来看,需要包括网民可以通过电影......