java类如何获取项目相对路径,java获取当前路径的几种方法

  java类如何获取项目相对路径,java获取当前路径的几种方法

  00-1010 1.目录结构2。班级。getresource(字符串名称)3。班级。getclassloader()。getresource(字符串名)3.1区别3.2ClassLoader3.3关于URL前言:的一些知识

  在纯Java代码中,我们通常使用class.getResource(字符串名)或者class。getclassloader()。getresource (stringname)来获取文件的地址(当然不止这两种方法)。今天就来说说两种方法的异同。这里的纯Java代码不是Java web项目。

  

目录

 

  00-1010输入:可以接受相对路径(相对于本类)或绝对路径(根符号/表示项目的根,不表示硬盘的根)。

  Url对象该对象表示指向名称的资源。

  //获取相对路径。此时你得到这个类文件的同级目录System.out.println(相对路径:同级目录下的配置文件 main . class . get resource( demo . properties )));//获取的绝对路径相对于System.out.println(绝对路径:同一目录下的配置文件 main . class . get resource (/com/xing/demo/demo . properties ));System.out.println(相对路径:配置文件 main.class.getresource(./xing.properties ))在以前的目录中);System.out.println(绝对路径:根目录下的配置文件 main . class . get resource(/src . properties )));//当传入绝对路径(带“/”)时,getresource()方法将从项目的根目录解析路径地址返回:

  相对路径:配置文件file :/e :/idea work/path demo/out/production/path demo/com/xing/demo/demo . properties绝对路径:配置文件file 3360/e :/idea work/path demo/out/production/path demo/com/xing/demo . properties相对路径:配置文件file :/e 3360/idea work/path demo/out/production/path demo/com/xing/xing . properties绝对路径:配置文件file 3333333

  00-1010输出:只能接受相对路径,但此相对路径是相对于根目录的。

  输入:物体

  //src与根目录在同一级别,即System.out.println(相对路径:配置文件 main.class.getclassloader()。同级目录中的get resource( src . properties )));System.out.println(相对路径:配置文件 main.class.getclassloader()。相对于根目录的下一级目录中的get resource( com/com . properties ));System.out.println(相对路径:配置文件 main.class.getclassloader()。根目录旁边目录中的get resource( com/xing/xing . properties );返回:

  路径:同一个目录下的配置文件file :/e :/idea work/path demo/out/production/path demo/src . properties是相对的。

  路径:相对根目录的下一级目录下的配置文件>file:/E:/ideawork/pathdemo/out/production/pathdemo/com/com.properties相对路径:相对根目录的下下一级目录下的配置文件>file:/E:/ideawork/pathdemo/out/production/pathdemo/com/xing/xing.properties

  注意:

  

/**  * 下面两种有相同的作用  */System.out.println("==相对路径:同级目录下的配置文件>"+Main.class.getResource("demo.properties"));System.out.println("==相对路径:相对根目录的下下一级目录下的配置文件>"+Main.class.getClassLoader().getResource("com/xing/demo/demo.properties"));

输出:

 

  

==相对路径:同级目录下的配置文件>file:/E:/ideawork/pathdemo/out/production/pathdemo/com/xing/demo/demo.properties==相对路径:相对根目录的下下一级目录下的配置文件>file:/E:/ideawork/pathdemo/out/production/pathdemo/com/xing/demo/demo.properties

 

  

 

  h3>3.1区别两者的区别:

  其实我们看源码就知道class.getResource 其实就是用的 class.getClassLoader().getResource(String name)

  只不过是class.getResource 会通过 resolveName 这个方法把传入的路径都转换为符合 class.getClassLoader().getResource()的路径 然后让 getClassLoader 处理。

  

 

  

3.2ClassLoader

class.getClassLoader().getResource(String name) 使用的是 ClassLoader,而 ClassLoader 的获取是有很多方法的。

 

  获取 classLoader 的方法:

  Thread.currentThread().getContextClassLoader()ClassLoader.getSystemClassLoader().class.getClassLoader()

System.out.println(Thread.currentThread().getContextClassLoader().getResource("src.properties"));System.out.println(ClassLoader.getSystemClassLoader().getResource("src.properties"));

输出:

 

  

file:/E:/ideawork/pathdemo/out/production/pathdemo/src.propertiesfile:/E:/ideawork/pathdemo/out/production/pathdemo/src.properties

 

  

扩展一下: 获取项目的硬盘目录 直到项目名级别的目录

 

  

// 输出:E:sparkworkpathdemoSystem.out.println(System.getProperty("user.dir"));

 

  

3.3关于 URL 的一些知识

URL fileURL = Main.class.getResource("/src.properties");// 输出:file:/E:/sparkwork/pathdemo/out/production/pathdemo/src.propertiesSystem.out.println(fileURL.toURI());// 输出:/E:/sparkwork/pathdemo/out/production/pathdemo/src.propertiesSystem.out.println(fileURL.getPath());// 这两种方法都是可以的 File file = new File(fileURL.toURI());Filw file2 = new File(fileURL.getPath())

到此这篇关于Java项目中获取路径的绝对路径问题和相对路径问题的文章就介绍到这了,更多相关Java项目中获取文件地址内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

 

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: