java取得路径各种方法总结

 

1、 java文件中获得路径
Thread.currentThread().getContextClassLoader().getResource("") //获得资源文件(.class文件)所在路径

ClassLoader.getSystemResource("")
Class_Name.class.getClassLoader().getResource("")
Class_Name.class .getResource("/")         
Class_Name.class .getResource("")         // 获得当前类所在路径
System.getProperty("user.dir")              // 获得项目根目录的绝对路径
System.getProperty("java.class.path")    //得到类路径和包路径

打印输出依次如下:
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/com/xml/imp/
F:work_litaouri_test
F:work_litaouri_testWebContentWEB-INFclasses;F:work_litaouri_testWebContentWEB-INFlibdom4j.jar

2、 JSP中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:request.getRequestURI()
文件的绝对路径  :application.getRealPath(request.getRequestURI());
当前web应用的绝对路径 :application.getRealPath("/");
取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent()
3.1 JSP中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:request.getRequestURI()
文件的绝对路径  :application.getRealPath(request.getRequestURI());
当前web应用的绝对路径 :application.getRealPath("/");
取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent()

 

3、Servlet中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:request.getServletPath();
文件的绝对路径 :request.getSession().getServletContext().getRealPath(request.getRequestURI())
当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/");
(ServletContext对象获得几种方式:
javax.servlet.http.HttpSession.getServletContext()
javax.servlet.jsp.PageContext.getServletContext()
javax.servlet.ServletConfig.getServletContext()
)

ClassLoader.getSystemResource()

从用来加载类的搜索路径中查找具有指定名称的资源。此方法通过系统类加载器来查找资源。用于读取资源的 URL 对象,返回 URL 类型,如果找不到资源,则返回 null。

参数以"/"开头是相对于包的路径,否则表示相对于类的路径。

 

ClassLoader.getResource()

查找具有给定名称的资源。资源是可以通过类代码以与代码基无关的方式访问的一些数据(图像、声音、文本等)。资源名称是以"/"分隔的标识资源的路径名称。

此方法首先搜索资源的父类加载器;如果父类加载器为 null,则搜索的路径就是虚拟机的内置类加载器的路径。如果搜索失败,则此方法将调用 findResource(String) 来查找资源。用于读取资源的 URL 对象,返回 URL 类型,如果找不到该资源,或者调用者没有足够的权限获取该资源,则返回 null。

 

File.getAbsolutePath()

返回此抽象路径名的绝对路径名字符串。

如果此抽象路径名已经是绝对路径名,则返回该路径名字符串,这与 getPath() 方法一样。如果此抽象路径名是空抽象路径名,则返回当前用户目录的路径名字符串,该目录由系统属性 user.dir 指定。否则,使用与系统有关的方式解析此路径名。在 UNIX 系统上,根据当前用户目录解析相对路径名,可使该路径名成为绝对路径名。在 Windows 系统上,根据路径名指定的当前驱动器目录(如果有)解析相对路径名,可使该路径名成为绝对路径名;否则,可以根据当前用户目录解析它。 返回绝对路径名字符串,它与此抽象路径名表示相同的文件或目录。

 

System.getProperty("user.dir")

取得用户当前工程路径,因为所有在java.io中的类都是将相对路径名解释为起始于用户的当前工作目录,所以应该清楚当前的目录。

 

Class.getResource()

查找带有给定名称的资源。查找与给定类相关的资源的规则是通过定义类的 class loader 实现的。返回一个 URL 对象;如果找不到带有该名称的资源,则返回 null。此方法委托给此对象的类加载器。如果此对象通过引导类加载器加载,则此方法将委托给 ClassLoader.getSystemResource(java.lang.String)。

在委托前,使用下面的算法从给定的资源名构造一个绝对资源名:

    如果 name 以 "/" ("/u002f") 开始,则绝对资源名是"/" 后面的 name 的一部分。
    否则,绝对名具有以下形式:modified_package_name/name,其中 modified_package_name 是此对象的包名,该名用 "/" 取代了 "." ("/u002e")。

 
Class.getResourceAsStream()

API中说明与getResource相同,都是委托给ClassLoader.getSystemResource(name);的。

 

资源文件路径结构

"[01]" + ClassLoader.getSystemResource("")
"[02]" + Thread.currentThread().getContextClassLoader().getResource("")
"[03]" + this.getClass().getClassLoader().getResource("")
"[04]" + this.getClass().getResource("Path.class")
"[05]" + new File("/").getAbsolutePath()
"[06]" + new File("").getAbsolutePath()
"[07]" + System.getProperty("user.dir")
"[08]" + this.getClass().getResource("/test.xml")
"[09]" + this.getClass().getResource("/test.xml").toString()
"[10]" + this.getClass().getResource("/test.xml").getFile()
"[11]" + new File(this.getClass().getResource("/test.xml").toString()).getAbsolutePath()
"[12]" + new File(this.getClass().getResource("/test.xml").getFile()).getAbsolutePath()
"[13]" + new InputStreamReader(this.getClass().getResourceAsStream("/test.xml"))
"[14]" + this.getClass().getResource("test.xml").toString()
"[15]" + this.getClass().getResource("test.xml").getFile()
"[16]" + new File(this.getClass().getResource("test.xml").toString()).getAbsolutePath()
"[17]" + new File(this.getClass().getResource("test.xml").getFile()).getAbsolutePath()
"[18]" + new InputStreamReader(this.getClass().getResourceAsStream("test.xml"))

 

windows下执行class文件的结果(编译文件在E:/workspace/sunyzc/bin/)

[01]file:/E:/workspace/sunyzc/bin/
[02]file:/E:/workspace/sunyzc/bin/
[03]file:/E:/workspace/sunyzc/bin/
[04]file:/E:/workspace/sunyzc/bin/com/sunyzc/test/Path.class
[05]E:/
[06]E:/workspace/sunyzc/bin
[07]E:/workspace/sunyzc/bin
[08]file:/E:/workspace/sunyzc/bin/test.xml
[09]file:/E:/workspace/sunyzc/bin/test.xml
[10]/E:/workspace/sunyzc/bin/test.xml
[11]E:/workspace/sunyzc/bin/file:/E:/workspace/sunyzc/bin/test.xml
[12]E:/workspace/sunyzc/bin/test.xml
[13]java.io.InputStreamReader@c17164
[14]file:/E:/workspace/sunyzc/bin/com/sunyzc/test/test.xml
[15]/E:/workspace/sunyzc/bin/com/sunyzc/test/test.xml
[16]E:/workspace/sunyzc/bin/file:/E:/workspace/sunyzc/bin/com/sunyzc/test/test.xml
[17]E:/workspace/sunyzc/bin/com/sunyzc/test/test.xml
[18]java.io.InputStreamReader@1fb8ee3

windows下执行class

windows下执行class

 

windows下执行jar包的结果(jar包文件在E:/workspace/sunyzc/)

[01]null
[02]null
[03]null
[04]jar:file:/E:/workspace/sunyzc/sunyzc.jar!/com/sunyzc/test/Path.class
[05]E:/
[06]E:/workspace/sunyzc
[07]E:/workspace/sunyzc
[08]jar:file:/E:/workspace/sunyzc/sunyzc.jar!/test.xml
[09]jar:file:/E:/workspace/sunyzc/sunyzc.jar!/test.xml
[10]file:/E:/workspace/sunyzc/sunyzc.jar!/test.xml
[11]E:/workspace/sunyzc/jar:file:/E:/workspace/sunyzc/sunyzc.jar!/test.xml
[12]E:/workspace/sunyzc/file:/E:/workspace/sunyzc/sunyzc.jar!/test.xml
[13]java.io.InputStreamReader@1fb8ee3
[14]jar:file:/E:/workspace/sunyzc/sunyzc.jar!/com/sunyzc/test/test.xml
[15]file:/E:/workspace/sunyzc/sunyzc.jar!/com/sunyzc/test/test.xml
[16]E:/workspace/sunyzc/jar:file:/E:/workspace/sunyzc/sunyzc.jar!/com/sunyzc/test/test.xml
[17]E:/workspace/sunyzc/file:/E:/workspace/sunyzc/sunyzc.jar!/com/sunyzc/test/test.xml
[18]java.io.InputStreamReader@61de33

windows下执行jar文件

windows下执行jar文件

 

linux下执行jar包的结果(jar包文件在/usr/workspace/sunyzc/)

iCAS:~# cd /usr/workspace/sunyzc
iCAS:/usr/workspace/sunyzc# java -classpath sunyzc.jar com.sunyzc.test.Path
[01]null
[02]null
[03]null
[04]jar:file:/usr/workspace/sunyzc/sunyzc.jar!/com/sunyzc/test/Path.class
[05]/
[06]/usr/workspace/sunyzc
[07]/usr/workspace/sunyzc
[08]jar:file:/usr/workspace/sunyzc/sunyzc.jar!/test.xml
[09]jar:file:/usr/workspace/sunyzc/sunyzc.jar!/test.xml
[10]file:/usr/workspace/sunyzc/sunyzc.jar!/test.xml
[11]/usr/workspace/sunyzc/jar:file:/usr/workspace/sunyzc/sunyzc.jar!/test.xml
[12]/usr/workspace/sunyzc/file:/usr/workspace/sunyzc/sunyzc.jar!/test.xml
[13]java.io.InputStreamReader@1034bb5
[14]jar:file:/usr/workspace/sunyzc/sunyzc.jar!/com/sunyzc/test/test.xml
[15]file:/usr/workspace/sunyzc/sunyzc.jar!/com/sunyzc/test/test.xml
[16]/usr/workspace/sunyzc/jar:file:/usr/workspace/sunyzc/sunyzc.jar!/com/sunyzc/test/test.xml
[17]/usr/workspace/sunyzc/file:/usr/workspace/sunyzc/sunyzc.jar!/com/sunyzc/test/test.xml
[18]java.io.InputStreamReader@7f5f5897
iCAS:/usr/workspace/sunyzc#

linux下执行jar文件

linux下执行jar文件

 

windows下tomcat执行class(编译文件在E:/workspace/sunyzc/context/WEB-INF/classes/)

[01]null
[02]file:/E:/workspace/sunyzc/context/WEB-INF/classes/
[03]file:/E:/workspace/sunyzc/context/WEB-INF/classes/
[04]null
[05]C:/
[06]C:/Users/sunyzc
[07]C:/Users/sunyzc
[08]null
后面均为空指针

 

windows下tomcat执行jar包(tomcat路径E:/apache-tomcat-6.0.35/)

[01]null
[02]file:/E:/apache-tomcat-6.0.35/lib/
[03]file:/E:/apache-tomcat-6.0.35/lib/
[04]null
[05]C:/
[06]C:/Users/sunyzc
[07]C:/Users/sunyzc
[08]null
后面均为空指针

 

linux下tomcat执行jar包(tomcat路径/usr/sharescm/tomcat6.0.26/)

[01]null
[02]file:/usr/sharescm/lcd/WEB-INF/classes/
[03]file:/usr/sharescm/lcd/WEB-INF/classes/
[04]null
[05]/
[06]/root
[07]/root
[08]null
后面均为空指针

时间: 2024-11-05 14:50:48

java取得路径各种方法总结的相关文章

java,有没有拖动文件到窗口,然后获得该文件路径的方法。C语言有.

问题描述 java,有没有拖动文件到窗口,然后获得该文件路径的方法.C语言有. 这样化简和替代了,浏览选择文件的过程.拖文件进窗口,即可完成路径的指定 解决方案 http://blog.csdn.net/bolink5/article/details/4499544

JAVA获取CLASSPATH路径的方法详解_java

ClassLoader 提供了两个方法用于从装载的类路径中取得资源: public URL getResource (String name); public InputStream getResourceAsStream (String name);        这里name是资源的类路径,它是相对与"/"根路径下的位置.getResource得到的是一个URL对象来定位资源,而getResourceAsStream取得该资源输入流的引用保证程序可以从正确的位置抽取数据.     

基于获取JAVA路径,包括CLASSPATH外的路径的方法详解_java

归纳一些网上取JAVA路径的方法: 注明:如果从ANT启动程序,this.getClass().getResource("")取出来的比较怪,直接用JAVA命令行调试就可成功.得到classpath和当前类的绝对路径的一些方法获得CLASSPATH之外路径的方法:URL base = this.getClass().getResource(""): //先获得本类的所在位置,如/home/popeye/testjava/build/classes/net/ Stri

JAVA获取文件绝对路径的方法_java

本文实例讲述了JAVA获取文件绝对路径的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: /** * 获取一个类的class文件所在的绝对路径. 这个类可以是JDK自身的类,也可以是用户自定义的类,或者是第三方开发包里的类. * 只要是在本程序中可以被加载的类,都可以定位到它的class文件的绝对路径. * * @param cls *            一个对象的Class属性 * @return 这个类的class文件位置的绝对路径. 如果没有这个类的定义,则返回nu

Java获取此次请求URL以及服务器根路径的方法_java

本文介绍了Java获取此次请求URL以及获取服务器根路径的方法,并且进行举例说明,感兴趣的朋友可以学习借鉴下文的内容. 一. 获取此次请求的URL String requestUrl = request.getScheme() //当前链接使用的协议 +"://" + request.getServerName()//服务器地址 + ":" + request.getServerPort() //端口号 + request.getContextPath() //应用

java区分绝对路径和相对路径的方法_java

本文实例讲述了java区分绝对路径和相对路径的方法.分享给大家供大家参考.具体分析如下: 这里要区分的是目录路径 如: /opt/deve/tomcat/bin c:\deve\tomcat\bin 都是绝对目录路径 bin bin/data bin\data 都是相对目录路径 通过观察,发现规律 以/开始 或者 包含\或//的都是绝对路径 或者 以/开始 或者 包含:的都是绝对路径 反之就是相对路径 介绍几个方法: startsWith public class Stringutil { pu

Java开发中各种获得路径的方法

归纳一些网上取JAVA路径的方法: 注明:如果从ANT启动程序,this.getClass().getResource("")取出来的比较怪,直接用JAVA命令行调试就可成功. 得到classpath和当前类的绝对路径的一些方法 获得CLASSPATH之外路径的方法: URL base = this.getClass().getResource(""): //先获得本类的所在位置,如/home/popeye/testjava/build/classes/net/ S

管理Java类路径(UNIX和Mac OS X)

类路径可以连接 Java 运行库和文件系统.它定义编译器和解释器应该在何处查找要加载的 .class 文件.它的基本思想是:文件系统的层次结构反映了 Java 包的层次结构,而类路径则定义了文件系统中的哪个目录可以作为 Java 包层次结构的根. 遗憾的是,通常文件系统非常复杂并依赖于平台,而且和 Java 包也不能很好地匹配.这样一来,不论是新用户还是资深 Java 程序员都深感类路径的棘手.没错,它的确不是 Java 平台好的一面,它让您到了下班的时候还在忙于调试一个顽固的小问题. 当然采用

管理Java类路径(Windows)

类路径可以连接 Java 运行库和文件系统.它定义编译器和解释器应该在何处查找要加载的 .class 文件.它的基本思想是:文件系统的层次结构反映了 Java 包的层次结构,而类路径则定义了文件系统中的哪个目录可以作为 Java 包层次结构的根. 遗憾的是,通常文件系统非常复杂并依赖于平台,而且和 Java 包也不能很好地匹配.尤其是在 Windows 环境中更是如此.Java 是一些 Unix 高手设计的,因而从很多方面来说,这也就意味着它无法很好地与 Windows 约定同步.这样一来,不论