Java Class
System.getProperty("user.dir");
new File("/")
Thread.currentThread().getContextClassLoader().getResource("")
FileTest.class.getClassLoader().getResource("")
ClassLoader.getSystemResource("")
FileTest.class.getResource("")
FileTest.class.getResource("/")
new File("/").getAbsolutePath()
JSP
request.getRequestURI() -- 根目录所对应的绝对路径
application.getRealPath(request.getRequestURI()) -- 文件的绝对路径
application.getRealPath("/") -- 当前web应用的绝对路径
new File(application.getRealPath(request.getRequestURI())).getParent() -- 取得请求文件的上层目录
servletConfig.getServletContext().getRealPath("/") -- 当前web应用的绝对路径
Servlet
request.getServletPath() -- 根目录所对应的绝对路径
request.getSession().getServletContext().getRealPath(request.getRequestURI()) -- 文件的绝对路径
服务器路径
1) Weblogic
new FileInputStream("yourconfig/yourconf.properties")
new FileInputStream("./yourconfig/yourconf.properties")
2)Tomcat
System.getProperty("user.dir")
1. System.getProperty("user.dir");
说明: User's current working directory;通俗的说就是运行dos命令的那个目录。
例子: 写了一个java FilePathTest.java; 位于包 basic下面。
package basic; public class FilePathTest { public static void main(String[] args) { String sPath = System.getProperty("user.dir"); System.out.println(sPath); } }
使用javac命令编译成.class的文件(eclipse下自动就生成了,位于 bin目录下)
测试例子1:
将文件夹basic和里面的 FilePathTest.class文件
1)拷到C盘根目录:进入dos命名,输入 java basic.FilePathTest 回车==> C:\
2)拷到D盘根目录:进入dos命名,输入 java basic.FilePathTest 回车==> D:\
测试例子2:
将此Class打包成jar档, 执行 "java -jar jarname", 效果和测试例子1是一样的
测试例子3:
如果是web项目,使用这种方式会视不同的web服务器不同而不同
比如在Tomcat 中,JSP方式调用取到的是Tomcat的安装根目录。
所以在web项目中,这种方式基本上没什么用。