在java中,涉及路径的问题有很多,不管在windows还是linux系统中,不要纠结”/“分隔符的使用,在windows系统中,资源加载器会自动的将”/“转换成”\“。

在java中获取资源的方式有2种,假设工程的编译输出路径为E:\java\Test_Project\bin

1.getClass().getResource();

  1.getClass().getResource("/")  ---> E:\java\Test_Project\bin

  2.getClass().getResource("") ---> E:\java\Test_Project\bin\com\util   (假设当前类的包名为com.util)

2.getClass().getClassLoader().getResource()

  1.getClass().getClassLoader().getResource("")  ---> E:\java\Test_Project\bin

  2.getClass().getClassLoader().getResource("/")  ---> 不支持使用"/"

3.servletContext.getResource("") ---> 在web项目中,使用servletContext接口中的getResource()方法进行文件获取,根目录是部署后的文件根目录,一般情况下priperties等的配置文件都在classes文件夹中,

所以准确的获取方式为servletContext.getResource("/WEB-INF/classes/db.properties"),若在web项目中仍旧使用ClassLoader方式加载资源,则保持不变,即getClass().getClassLoader().getResource("db.properties")

得出结论,context默认的根目录为项目部署目录,而classloader方式加载资源文件,默认根目录为资源文件编译目录,也就是classes目录

public static void main(String[] args) throws IOException {
InputStream inputStream = Main.class.getClassLoader().getResourceAsStream("aa.txt");
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
char[] chars = new char[1024];
int len = 0;
while ((len = inputStreamReader.read(chars)) != -1) {
for (char c : chars) {
System.out.print(c);
}
}
inputStreamReader.close();
inputStream.close();
}

打包后的资源文件访问问题总结,假设打包成jar包名称为Main.jar

1.将资源文件打包在jar包内

使用 getClass().getClassLoader().getResource("") 的方式读取资源文件,资源文件的路径如下图,aa.txt在解压Main.jar后的根目录下

2.不将资源文件打包在jar包内

使用 getClass().getClassLoader().getResource("") 的方式读取资源文件,则jar包需要与aa.txt在同一个目录下

3.提出疑问,若打包时把资源文件打包在了jar包内,然后再将该资源文件进行删除,把资源文件放在jar包同目录,看是否能正常运行

测试结果:当把jar包内的资源文件进行删除后,程序报错,无法找到该资源。然后把资源文件放在jar包的同目录内,又可以正常运行

得出结论:jar包内的根目录其实等同于jar包所在的当前目录,当在java代码内进行资源文件引用时,会从jar包内部的当前目录和jar包当前所在目录进行资源文件的查找,

       可以把java工程中编译后的bin目录等同于jar包当前所在目录和jar包内部的当前目录。

java中路径的问题的更多相关文章

  1. 11. java中路径/和\的区别

    一般可以认为是"/"的作用等同于"\\"在java中路径一般用"/"windows中的路径一般用"\"linux.uni ...

  2. java中路径的获取

    网上摘录 (1).request.getRealPath("/");//不推荐使用获取工程的根路径 (2).request.getRealPath(request.getReque ...

  3. Java中路径相关的获取方式

    [参考文章]:Java文件路径(getResource) [参考文章]:关于java:如何获取正在运行的JAR文件的路径? [参考文章]:关于Class.getResource和ClassLoader ...

  4. 对java中路径的一些理解

    开始前先贴一下项目结构 public class TestLocation { @Test public void test1(){ String s1 = Objects.requireNonNul ...

  5. java中路径中参数值是中文,打印到页面是乱码的解决方案

    jsp代码: <% String name=request.getParameter("name"); String age=request.getParameter(&qu ...

  6. java绝对路径和相对路径的理解

    日常开发中引用东西经常会遇到路径问题,各种尝试,各种出错,其实只要理解了这两种路径,问题便迎刃而解. 在java中路径有两种表示方法:绝对路径和相对路径. (1) 相对路径:它以不带“\”的目录名表示 ...

  7. JAVA中 "\" 和 "/" 的区别

    1.在java中路径一般用”/” 2.linux.unix中的路径一般用”/” 3.windows中的路径一般用”\” 所以在java中写windows路径一般用”/”,或用“\”将”\”转义一下(& ...

  8. 【04-10】java中的路径

    java中的路径 System.getProperty("user.dir")  获取工程的绝对路径 Class.class.getClass().getResource(&quo ...

  9. Java EE 编程中路径

    版权声明:未经博主允许,不得转载 首先我们要限定一个范围,是一个项目,或是以个访问地址..就先以一个项目为限定的范围 前述: 学过物理学的都知道相对运动和绝对运动, 虽然是相似的概念,但这里的要简单得 ...

随机推荐

  1. windows重建ESP分区修复引导

    开始 装在虚拟机里面的win7实在是太卡了,所以准备把虚拟磁盘文件复制到固态硬盘,,,但是,,, 我只有128GB固态... 那就只能卸载之前通宵装的linux 好气 首先需要装进入PE UEFI + ...

  2. 用户登录(php)

    <!DOCTYPE HTML><html><head><meta charset="utf-8"><script type=& ...

  3. 金蝶云星空使用WebAPI来新增单据

    有很多客户需求在后台自动生成某张单据,金蝶云星空提供了WebApi,包含了保存,提交,审核,删除单据的接口,下面以生产订单的保存,提交,审核为例,说明一下应用WebApi后台自动生成生产订单的功能,下 ...

  4. 输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)

    我没有实现时间复杂度为O(n)的算法. 思路:从第一数开始,onelist[0]:onelist[0]+onelist[1]:这样依次推算出每个子数组的sum值.和max进行比较.最后得到max值. ...

  5. Vue开发重点基础知识

    1.Vuejs组件 vuejs构建组件使用 Vue.component('componentName',{ /*component*/ }): 这里注意一点,组件要先注册再使用,也就是说: Vue.c ...

  6. MyBatis-单表的增删改查(CRUD)操作

          在学习MyBatis的单表的增删改查操作之前,还是再次熟悉下MyBatis这个框架,只有对其熟悉的情况下,才能很好的使用,灵活的开发.         MyBatis优点:         ...

  7. C#中向ListView控件中添加一行数据

    C#中向ListView控件中添加一行数据: ,先声明一个ListViewItem: ListViewItem item = new ListViewItem(); ,添加第一列数据: item.Te ...

  8. 通过属性选择器找元素,可以通过$(__).length是否为0来判断是否找到了元素

    通过属性选择器找元素,可以通过$("").length是否为0来判断是否找到了元素. 为0的时候表示没有找到,其余则返回找到了多少个. 不能通过$("")是否为 ...

  9. 两个map合并

    两个map合并所用函数为:putAll package myProject; import java.util.HashMap; import java.util.Map; public class ...

  10. Html5 Canvas 使用

    <div> <img id="scream" src="dali.jpg" alt="The Scream" width= ...