记得在操作系统中了解到文件读取有两种方式,当然这在各编程语言中也是通用的,所以java路径也分,相对和绝对路径。
绝对路径URI ,听着和URL很相似,那我们就来看看吧。
URI(Uniformresource Identifier)统一资源标示符.URL统一资源定位符,是一个定位器,还说明了具体如何找到资源.所以他们就有一种抽象和继承的关系。URI抽象的说明了统一资源表示符号,而URL是具体的标识符的方式.
如何使用呢。如我们想获取一个类的具体位置。只要如下方式:
例如:test.class.GetResouce("");
如果中间加了"/",test.class.GetResouce("/");获取的就是该java类的跟目录了。两者是不同的。
通常是相对于某一绝对路径的,我们常使用的是相对于ClassPath。
如:使用ClassLoader类的getResouce()等方法,得到的是当前classPath相对路径。
URL ds=Thread.currentThread().getContextClassLoader().getResource(""); System.out.print(ds+"\n"); System.out.print(ClassLoader.getSystemResource(""));
两种结果是相同的.
若要读取内容,直接使用字节流文件
InputStream in=ClassLoader.getSystemResourceAsStream(""beanx-config.xml"");
ClassLoader是类加载器,可以指定加载特殊资源.上图中为何相同呢.原因在于Thread.currentThread()设定了当前的 ClassLoader.他们都指定默认的路径.所以两者路径相同.
URL是一种具体的URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。URI是一种语义上的抽象概念,可以是绝对的,也可以是相对的,而URL则必须提供足够的信息来定位,所以,是绝对的,而通常说的relative URL,则是针对另一个absolute URL,本质上还是绝对的.
原文:http://blog.csdn.net/han_yankun2009/article/details/38463845