一、Class.getResource()
Class.getResource()方法可以获取相对于当前Class所在目录的资源路径。
String path = MyClass.class.getResource("file.txt").getPath(); System.out.println(path);
上述代码可以获取到file.txt文件相对于MyClass.class所在目录的路径。
需要注意的是,getResource()方法返回的是URL对象,需要调用getPath()方法获取文件路径。
二、ClassLoader.getResource()
ClassLoader.getResource()方法可以获取classpath下的资源路径。
URL url = MyClass.class.getClassLoader().getResource("file.txt"); String path = url.getPath(); System.out.println(path);
上述代码获取classpath下的file.txt文件路径。
三、File对象获取路径
通过File对象获取路径需要注意路径的写法。
File file = new File("src/main/resources/file.txt"); String path = file.getAbsolutePath(); System.out.println(path);
该方法需要写绝对路径或者相对于当前程序所在的工作目录的相对路径。
四、Properties文件读取
在Java程序中,经常需要通过properties文件获取配置信息。
Properties props = new Properties(); InputStream in = MyClass.class.getClassLoader().getResourceAsStream("config.properties"); props.load(in); String value = props.getProperty("key"); System.out.println(value);
上述代码通过getResourceAsStream()方法获取classpath下的config.properties文件的输入流,然后通过Properties类的getProperty()方法获取对应的value值。
五、Spring统一资源加载
Spring框架提供了一种统一的方式加载Classpath,文件系统,URL和ServletContext等资源。
Resource resource = new ClassPathResource("file.txt"); String path = resource.getFile().getAbsolutePath(); System.out.println(path);
上述代码通过ClassPathResource类获取classpath下的file.txt文件的路径。