码迷,mamicode.com
首页 > 编程语言 > 详细

Java中通过相对路径来定位文件

时间:2014-11-08 23:29:42      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:io   ar   os   使用   java   sp   strong   文件   on   

通常我们定位文件都是通过绝对路径进行定位,比如“F:/Java/bin/test/test.java”,这样的缺点就是,一旦项目文件移动,这些路径就完全失效。

所以,下面我们来介绍一种通过相对路径来定位文件的方法。我用的IDE是eclipse,项目路径下有src和bin文件夹分别存放,java的源代码和编译文件。

如图,我的工程名是project,在F盘的study目录下,包名是com.www,源文件是Test.java

bubuko.com,布布扣

我们知道,java的源文件编译后才能运行,也就是java运行的其实是Ttest.class,而test.class在bin文件目录下,跟src目录一点关系也没有,那么如果要定位src目录下的文件,就只能使用绝对路径来定位了。

下面讨论,用相对路径来定位bin目录下的文件,我们要定位test33.xml 、test22.xml 、test11.xml。定义类名为Test,new一个实例为te。

首先用定位该类:

采用类:Test.class.getClass()

采用实例:te.getClass()   ,对象调用时,可以使用this.getClass()

定位www.txt

  方法一:String str11 = te.getClass().getResource("www.txt").getFile() ,打印显示:/D:/study/project/bin/com/www/www.txt

     如果想得到一个File类型的文件,使用getFile()方法,将 www.txt 换成 /com/www/www.txt 可得到同样的结果,这说明getResoure()方法是以bin 目录为根目录,可以定位bin目录下的任何一个文件,只不过它是从class文件所在目录开始向上找。(我试过定位projrct里面的文件,行不通)

  方法二:String str = te.getClass().getClassLoader().getResource("bin.txt").getPath(); 打印显示:/D:/study/project/bin/bin.txt

  如果要定位www.txt文件,可bin.txt 换成 /com/www/www.txt 即可,同样也是以bin目录为根目录,只不过是从bin目录开始向下找。(同样bin目录以上的不行)

  加了getClassLoader()方法实际上就是把起始目录从class文件目录变成了根目录。

常用方法:

 getResourse( )方法返回的是一个URL类型对象,目前貌似在定位文件上只有getPath()和getFile()方法比较常用。

  如果想得到一个File,File file = new File(te.getClass().getResource("www.txt").toURI())  或

                 new File(te.getClass().getResource("bin.txt").getFile())

 getClassLoader()方法返回的是一个ClassLoader类型对象,他也有getResourse( )方法,相当于多加了一层,后面的都一样。

 getResourceAsStream()方法返回的是一个InputStream类型对象

Java中通过相对路径来定位文件

标签:io   ar   os   使用   java   sp   strong   文件   on   

原文地址:http://www.cnblogs.com/manliu/p/4084093.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!