一、相对路径
关键字:基准目录
1、Spring中基准目录
ClassPathXmlApplicationContext
默认:classpath
加classpath前缀 :classpath
FileSystemXmlApplicationContext
默认:项目根目录
加classpath前缀:classpath
二、绝对路径
1、获取方法(假设在类 FileTest中)
当前类FileTest.class 的绝对目录:FileTest.class.getResource("")
- 当前classpath的绝对目录:
FileTest.class.getResource("/");
FileTest.class.getClassLoader().getResource("")
Thread.currentThread().getContextClassLoader().getResource("") 推荐
ClassLoader.getSystemResource("");
2、Web 应用程序
Web应用程序根目录: ServletContext.getRealPath("/")
三、不同类型资源访问方式总结
1、 classpath
- URL url = getClassLoader().getResource("java/lang/String.class")
- InputStream inputStream = getClassLoader().getResourceAsStream("java/lang/String.class")
2、web 应用
- URL url = servletContext.getResource("/WEB-INF/web.xml")
- InputStream inputStream = servletContext.getResourceAsStream("/WEB-INF/web.xml")
3、文件系统
- File file = new File("c:\\test.txt");
- InputStream inputStream = new FileInputStream(resourceFile)
4、访问Jar/Zip 文件中的资源
URL jarUrl = new File("/lib/rt.lib"").toURI().toURL();
URL resourceUrl = new URL("jar:" + jarURL +“!/java/lang/String.class”);
InputStream inputStream = resourceUrl.openStream();