一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

java取得路径各种方法总结

时间:2013-09-17 编辑:简简单单 来源:一聚教程网

 

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
后面均为空指针

热门栏目