java获取classpath下⽂件多种⽅式
java 获取classpath下⽂件多种⽅式⼀:properties下配置
在resources下定义server.properties
register.jks.path=classpath\:conf/userRegister/migu.jks
xml配置server.properties
<util:properties id="settings" location="classpath:conf/server.properties"/>
在service类⾥注⼊:
private ResourceLoader resourceLoader;
@Value("#{settings['register.jks.path']}")
private String trustKeyStore;
//调⽤:
public void add() {
ClassPathResource resource = (ClassPathResource) Resource(trustKeyStore);
}
⼆:在另⼀项⽬调⽤classpat⽂件 / (项⽬中调⽤jar包中的资源⽂件)
在resources下定义server.properties
jks.path=classpath:conf
在xml⾥配置
<bean id = "tianyiCert" class = "com.util.CertUtil">
<property name="serverCert" value = "${jks.path}/server.jks" />
</bean>
com.util.CertUtil⾥内容
import io.Resource;
public class CertUtil {
private Resource serverCert;
public Resource getServerCert() {
return serverCert;
}
public void setServerCert(Resource serverCert) {
this.serverCert = serverCert;
}
}
调⽤路径:
@Resource(name = "tianyiCert")
protected CertUtil certUtil;
protected String serverKey;
protected String getServerKey() {
if (StringUtils.isEmpty(serverKey)) {
try {
serverKey = ServerCert().getFile().getAbsolutePath();
return serverKey;
} catch (IOException e) {
e.printStackTrace();
}
}
return serverKey;
}
这样也可以。
下⾯是较常⽤的⽅式
三:常⽤的⽅式
ClassLoader 提供了两个⽅法⽤于从装载的类路径中取得资源:
public URL getResource (String name);
public InputStream getResourceAsStream (String name);
这⾥name是资源的类路径,它是相对与“/”根路径下的位置。getResource得到的是⼀个URL对象来定位资源,⽽getResourceAsStream 取得该资源输⼊流的引⽤保证程序可以从正确的位置抽取数据。
但是真正使⽤的不是ClassLoader的这两个⽅法,⽽是Class的 getResource和getResourceAsStream⽅法,因为Class对象可以从你的类得到(如YourClass.class或 Class()),⽽ClassLoader则需要再调⽤⼀次ClassLoader()⽅法,不过根据JDK⽂档的说法,Class对象的这两个⽅法其实是“委托”(delegate)给装载它的ClassLoader来做的,所以只需要使⽤ Class对象的这两个⽅法就可以了。
因此,直接调⽤ Class().getResourceAsStream(String name) ;获取流,
静态化⽅法中则使⽤SystemResourceAsStream (String name) ; 。
下⾯是⼀些得到classpath和当前类的绝对路径的⼀些⽅法。你可能需要使⽤其中的⼀些⽅法来得到你需要的资源的绝对路径。
Class().getResource("")
得到的是当前类class⽂件的URI⽬录。不包括⾃⼰!
如:file:/D:/workspace/jbpmtest3/bin/com/test/
eclipse怎么打开已有的java文件Class().getResource("/")
得到的是当前的classpath的绝对URI路径。
如:file:/D:/workspace/jbpmtest3/bin/
Class() .getClassLoader().getResource("")
得到的也是当前ClassPath的绝对URI路径。
如:file:/D:/workspace/jbpmtest3/bin/
SystemResource("")
得到的也是当前ClassPath的绝对URI路径。
如:file:/D:/workspace/jbpmtest3/bin/
5.Thread.currentThread().getContextClassLoader ().getResource("")
得到的也是当前ClassPath的绝对URI路径。
如:file:/D:/workspace/jbpmtest3/bin/
ServletContext().getRealPath(“/”)
Web应⽤程序中,得到Web应⽤程序的根⽬录的绝对路径。这样,我们只需要提供相对于Web应⽤程序根⽬录的路径,就可以构建出定位资源的绝对路径。
如:file:/D:/workspace/.metadata/.lipse./tmp0/wtpwebapps/WebProject
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论