在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) throwsIOException {

InputStream inputStream= Main.class.getClassLoader().getResourceAsStream("aa.txt");

InputStreamReader inputStreamReader= newInputStreamReader(inputStream);char[] chars = new char[1024];int len = 0;while ((len = inputStreamReader.read(chars)) != -1) {for (charc : 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包内部的当前目录。

windows java路径问题_java中路径的问题相关推荐

  1. java文件路径转义_java文件路径中“\”和“/”的区别

    java文件路径中"\"和"/"的区别 发布时间:2020-06-25 17:51:22 来源:亿速云 阅读:189 作者:Leah 本篇文章为大家展示了jav ...

  2. java io 文件路径格式_java中iofile的路径问题,确定一个未知方法所需要的文件路径...

    今天遇到一个极其烦躁的问题,一个jar包中的一个方法,要求函数中要求传入一个String类型的参数,用于指示文件所在的路径.但是对于我们来说完全不知道他需要的路径是绝对路径还是相对路径,所以我尝试了很 ...

  3. java获取子路径_Java中路径的获取

    1.Java中获取路径的方法:  Class_Name.class .getResource("")        //   Class_Name.class .getResour ...

  4. java 获取发布后的路径问题_Java中的路径问题实例分析

    Java中的路径问题实例分析 前言:关于Java中得路径问题,网上有很多获取的答案,我这篇文章的目的在于说明获取路径时一些不常见的概念.在实际应用中使用的比较多的就是,当前路径和配置文件的路径(其他文 ...

  5. java mkdirs 示例_java中关于File类的mkdirs()和FIle()构造方法在windows环境内网测试总结...

    环境:环境是内网windows,传入路径的时候不带盘符,并且服务器的win10也不是超级管理员账户 关于File类的mkdirs()远程访问创建不了文件和路径的问题. 如果浏览器操作者是windows ...

  6. java file 方法_JAVA中File的常用方法

    一.File类中包含了很多获得文件或文件夹属性的方法,使用起来比较方便,下面将常见的方法介绍如下: a.createNewFile方法 public boolean createNewFile() t ...

  7. java 位置定位_Java中资源定位方式

    1)根据文件系统定位: 所谓文件系统定位就是以文件系统的根目录为绝对路径,以程序运行的工作目录为相对路径进行资源定位.Java中最常用的以文件系统定位方式进行处理的类包括File. FileInput ...

  8. java 未初始化_Java中初始化问题

    一.普通类(无继承)的初始化顺序: java编程思想中,对一个对象的创建过程总结如下,假设有一个名为Dog的类: 1.即使没有显示的使用static关键字,构造器实际上也是静态方法.因此当首次创建一个 ...

  9. java classpath设置_Java中classpath怎么设置

    classpath的设置方法:首先点击"我的电脑":然后选择"属性",并找到"高级设置"中的"环境变量":接着在里面的系 ...

最新文章

  1. linux下su和su - 的区别
  2. 如何让 Flutter 应用更好地使用 SVG?
  3. Windows下的bat原来可以为我们做很多
  4. 加载程序中数据库账号密码加密策略wallet_04
  5. pulsar配置文件常用配置项
  6. 计算机专业是安大好还是合工大好,合肥工业大学和安徽大学哪个比较好?2019年志愿填报参考!...
  7. 美国下注15亿美元重点搞芯片!电子复兴5年计划首批入围项目曝光
  8. 面试python说会为什么_Python面试必须要看的15个问题
  9. 数据库优化之MySQL
  10. usb 测试软件,usb端口测试(USB端口测试工具)
  11. 安全龙网络安全攻防实验室
  12. 磁流体和两相磁流体的无条件能量稳定解耦算法
  13. 中国大学最卷的专业,让我读上了
  14. BP神经网络求解异或算法
  15. Java Json格式化工具
  16. slice扩容机制分析
  17. 解决KEEL闪退问题
  18. 安卓开发之apk自动安装代码
  19. Unity3d shader实现消融效果
  20. AI-腾讯云人脸核身之独立H5接入

热门文章

  1. Windows Nano Server安装配置详解06:在物理机中部署NanoServer
  2. case when then else end 用法
  3. 8051单片机的中断发送
  4. 修改树状控件TreeCtrl的节点名称
  5. SQL Server - SQL Server 2016新特性之 --- Query Store
  6. 窥探算法之美妙——寻找数组中最小的K个数python中巧用最大堆
  7. 夺命雷公狗---微信开发09----玩转单图文消息回复
  8. 大数据_Flink_数据处理_运行时架构7_程序结构和数据流图---Flink工作笔记0022
  9. 鸿蒙OS应用开发_基础篇_编写第一个HarmonyOs应用_体会HarmonyOs的一次开发多端部署_以及分布式任务调度_IDE安装_了解应用组件以及应用布局---HarmonyOs开发工作笔记001
  10. AndroidStudio安卓原生开发_Activity的启动方法_隐式启动2种方法_activity关闭---Android原生开发工作笔记83