一、相對路徑
關鍵字:基準目錄
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();