java加载资源路径以及ClassPath的关系

http://www.blogjava.net/flysky19/articles/93492.html

以下是我自己根据上面的文章和自学学习工作中做的总结,首先,我们的路径(如果不是绝对路径)都有一个前缀,比如我们这样写

FileInputStream fis = new FileInputStream("aa.txt");

如果是这样的话,他访问的到底是哪个文件呢,FileInputStream解析都是通过一个系统属性来作为前缀的,我们可以打印出来

如:System.out.println(System.getProperty("user.dir")),也就是说

前缀是user.dir这个系统属性,在web项目中这个路径是你的服务器路径,当然我没有做过严格测试,你可以自己仔细的看一下,怎么看呢?首先

我们可以创建一个文件

File file = new File("test.txt");

这个文件是我们用相对路径创建的,但是我们可以用Java 提供的API来获取其绝对路径

file.getAbsolutePath()  就可以看到,到底是从哪里加载的。这里通过这种方式我们就可以获取FileInputStream 的加载路径了。

另外一种情况是web工程

我一般是通过 Thread.currentThread.getContextClassLoader().getResourceAsStream("aa.txt"),这样,是从classpath,也就是WEB-INF/classes下加载了



高级篇

这里是手动添加jar包或者目录到classpath中

http://www.blogjava.net/jnbzwm/archive/2011/04/01/347491.html


classpath是ClassLoader加载资源的地方,其实我们可以查看到底某个ClassLoader是从哪里加载资源的,在看代码前,先了解ClassLoader的继承机制,ClassLoader ->SecureClassLoader->URLClassLoader

		URLClassLoader classLoader = (URLClassLoader)this.getClass().getClassLoader();
		URL [] urls = classLoader.getURLs();
		for(URL url : urls){
			System.out.println(url);
		}
可以打印出这些内容

http://lucien-zzy.iteye.com/blog/2001768 这里有详细的用法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值