先看一个实例
代码如下 | 复制代码 |
// 获取对象的绝对路径 public static String realpath(Object obj) throws URISyntaxException { return new File(obj.getClass().getResource("").toURI()).getAbsolutePath(); } |
一般情况下不需要直接使用绝对路径,使用流就可以了,this.getClass().getResourceAsStream(filename)。
如果要获取项目的根路径,把代码中obj.getClass()换成obj.getClass().getClassLoader()就可以了。
System.getProperty(“user.dir”) 用户的当前工作目录,这个应该和环境有关系,在eclipse中是src的上层目录。
其他信息自己看JDK API就明白了。
代码如下 | 复制代码 |
/** * 对象所在目录的绝对路径,也就是包的绝对路径 * * @param obj * Object * * @return String */ public static String getClassPath(Object obj) throws URISyntaxException { return new File(obj.getClass().getResource("").toURI()) .getAbsolutePath(); } /** |
如果我一个在取得项目中的绝对路径
一般用request.getRealPath("/")或request.getRealPath("/config/")
但现在不提倡使用request.getRealPath("/")了,大家可试用ServletContext.getRealPath("/")方法得到Web应用程序的根目录的绝对路径
要取得src的文件非常容易,因为src是默认的相对目录,比如你说要取得src下com目录的test.java文件,你只需要这样就够了
代码如下 | 复制代码 |
File f = new File(com/test.java); |
但如果我要取得不在src目录或者WebRoot目录下的文件呢,而是要从src或者WebRoot同级的目录中取呢,比如说doc吧我的硬方法是这样实现的:
代码如下 | 复制代码 |
String path = this.getServletContext().getRealPath("/"); Properties p = new Properties(); p.load(new FileInputStream(new File(path.substring(0,(path.lastIndexOf("//WebRoot") + 1)) + "doc/db.properties"))); System.out.println(p.getProperty("driverName")); |