从以下代码中,我们了解到,getResource获得的,都是classes文件的相对路径。
new File()或use.dir则是项目路径或eclipse路径或tomcat/bin路径
/**
*
*/
package servlet;
import java.io.File;
/**
* 测试文件路径
* @author jiangyongyuan
*/
public class TestPath {
public static void main(String []args){
printPath();
}
public static void printPath() {
System.out
.println("Thread.currentThread().getContextClassLoader().getResource(\"\")="
+ Thread.currentThread().getContextClassLoader()
.getResource(""));
System.out
.println("TestPath.class.getClassLoader().getResource(\"\")="
+ TestPath.class.getClassLoader().getResource(""));
System.out.println("ClassLoader.getSystemResource(\"\")="
+ ClassLoader.getSystemResource(""));
System.out.println("TestPath.class.getResource(\"\")="
+ TestPath.class.getResource(""));
System.out.println("TestPath.class.getResource(\"/\")="
+ TestPath.class.getResource("/"));
System.out.println("new File(\"\").getAbsolutePath()="
+ new File("").getAbsolutePath());
System.out.println("System.getProperty(\"user.dir\")="
+ System.getProperty("user.dir"));
}
/** result run at eclipse tomcat , and invoke in servlet :
*
Thread.currentThread().getContextClassLoader().getResource("")=file:/D:/workspace/3.com/build/app/WEB-INF/classes/
TestPath.class.getClassLoader().getResource("")=file:/D:/workspace/3.com/build/app/WEB-INF/classes/
ClassLoader.getSystemResource("")=null
TestPath.class.getResource("")=file:/D:/workspace/3.com/build/app/WEB-INF/classes/servlet/
TestPath.class.getResource("/")=file:/D:/workspace/3.com/build/app/WEB-INF/classes/
new File("").getAbsolutePath()=D:\eclipse-j2ee-europa
System.getProperty("user.dir")=D:\eclipse-j2ee-europa
如果是跑命令行的tomcat,在类中输出System.getProperty("user.dir");显示的是%Tomcat_Home%/bin
*/
/** result run at main method :
Thread.currentThread().getContextClassLoader().getResource("")=file:/D:/workspace/3.com/bin/
TestPath.class.getClassLoader().getResource("")=file:/D:/workspace/3.com/bin/
ClassLoader.getSystemResource("")=file:/D:/workspace/3.com/bin/
TestPath.class.getResource("")=file:/D:/workspace/3.com/bin/servlet/
TestPath.class.getResource("/")=file:/D:/workspace/3.com/bin/
new File("").getAbsolutePath()=D:\workspace\3.com
System.getProperty("user.dir")=D:\workspace\3.com
*/
}