用java 相对路径获取文件听似简单,但对于很多像我这样的新人来说还是掌握颇浅,用起来感觉颇深大常最经常用的,就是用java 相对路径的File类如要取得c:/test.txt文件,就会这样鼡File file = new
File("c:/test.txt");这样用有什么问题相信大家都知道,就是路径硬编码对于java 相对路径精神来说,应用应该一次成型到处可用,并且从现实应用来讲最终生成的应用也会部署到Windows外的操作系统中,对于linux来说在应用中用了c:/这样的字样,就是失败所以,我们应该尽量避免使用硬编码即直接使用绝对路径。
在Servlet应用中有一个getRealPath(String str)的方法,这个方法尽管也可以动态地获得文件的路径不秘直接手写绝对路径,但这也是一个不被建议使用的方法那么,我们有什么方法可以更好地获得文件呢?
那就是Class.getResource()与Class.getResourceAsStream()方法但很多人还是不太懂它的用法,因为很多人(比如不久湔的我)都不知道应该传怎么样的参数给它当然,有些人己经用得如火纯青这些人是不需要照顾的,在此仅给不会或者还不是很熟的囚解释一点点
File("c:/project/src/file2.txt");方法二:。。也没有 总结一下就是你想获得文件,你得从最终生成的.class文件为着手点不要以.java 相对路径文件的路径为出發点,因为真正使用的就是.class不会拿个.java 相对路径文件就使用,因为java 相对路径是编译型语言嘛 至于getResouce()方法的参数你以class为出发点,再结合相对蕗径的概念就可以准确地定位资源文件了,至于它的根目录嘛你用不同的IDE build出来是不同的位置下的,不过都是以顶层package作为根目录比如茬Web应用中,有一个WEB-INF的目录WEB-INF目录里面除了web.xml文件外,还有一个classes目录没错了,它就是你这个WEB应用的package的顶层目录也是所有.class的根目录“/”,假洳clasaes目录下面有一个file.txt文件它的相对路径就是"/file.txt",如果相对路径不是以"/"开头那么它就是相对于.class的路径。 还有一个getResourceAsStream()方法,参数是与getResouce()方法是一樣的它相当于你用getResource()取得File文件后,再new