?目资源路径分两种,一种是普通Java项目的资源路径,另一种是JavaEE项目的资源路径。
?
?
- this.getClass().getResource("/").getFile();??
- ??????????
- this.getClass().getClassLoader().getResource("").getFile();??
- ??????????
- ClassLoader.getSystemResource("").getFile();??
- ??????????
- Thread.currentThread().getContextClassLoader().getResource("").getFile();??
- ??????????
- new?File("bin").getCanonicalPath();??
- ??????????
- System.getProperty("user.dir")?+?File.separator?+?"bin";??
? ? ? ?据说方法4的系统兼容性最好,所以推荐第4种方法获取资源路径。
?
????
?
?
????对于获取JavaEE中的资源,其实就是获取WEB-INF目录的父目录下的资源,而且src的源码编译后的class文件,也会存放在WEB-INF/classes文件夹下,所以获取JavaEE资源的方法,也适用于获取Java普通资源,方法如下:
- request.getServletContext().getRealPath("");??
?
?
?
?
总结:
-
通过getClassLoader().getResource()的方法,只能获取package(包括jar包的资源)里面的资源
?
-
若想获取项目下普通目录的资源,可以通过new File(path)的方式获取,路径默认以项目路径为根,以bin开始表示获取bin目录,以src开始表示获取src目录,以XXX开始表示获取项目下XXX目录,该方法最灵活,就算是JavaEE项目同样适用(例如WecContent,可以使用new File("WebContent")获取),唯一缺点就是不能获取jar里面的资源(因为jar包的资源不是以普通File的形式存储的)