关于eclipse项目中的路径问题
在workspace中的路径如下;
test -----------------项目名
——src -----------------源文件路径
——liujun.test
-----------------包名
——test.java
-----------------类名
——tp.properties
-----------------文件名
*注:workspace在d:盘目录下
如:
Test.java:
File file= new File(filename);
filename="tp.properties" //这样在运行中肯定找不到路径,因为当前的相对路径是相对如项目(test)的
filename="/tp.properties" //在前面加上"/"的话,那就表示相对工作文档
那么该如何找到路径呢?
如果过filename="tp.properties"的话那么其代表的绝对路径就是:d:\workdapce\test\tp.properties,如此那么其其结果肯定是找不到路径
如果 filename="/tp.properties"的话那么其代表的绝对路径是:d:\tp.properties,自然也找不到路径
正确的写法;
filename="src/liujun/testtp.properties" 或者filename="/workdapce/test/src/liujun/testtp.properties" 当然前者的写法最好(原因很明显)
在这里要说明一下,在整个项目搭建编译后,其目录结构是有所区别的,编译后的class文件会放在其他木星下,当然src中非java文件也会复制过去
下面是J2SE和J2EE的目录结构,而最终运行的是class文件所以你的路径是要有所区别的
如果是J2SE项目,那么在编译后的的结构目录如下:
test -----------------项目名
——src -----------------源文件路径
——liujun.test
-----------------包名
——test.java
-----------------类名
——tp.properties
-----------------文件名
——bin -----------------源文件路径
——liujun
——test
-
——test.java
-----------------类名
——tp.properties
-----------------文件名
—— …… ----------------其他文件目录
……
……
如果是J2EE项目,那么在编译后的的结构目录如下:
test -----------------项目名
——src -----------------源文件路径
——liujun.test
-----------------包名
——test.java
-----------------类名
——tp.properties
-----------------文件名
——webapps -----------------源文件路径
——WEB-INF
——classes
——liujun
——test
-----------------
——test.java
-----------------类名
——tp.properties -----------------文件名
—— …… ----------------其他文件目录
……
……
*注
以上的目录可能每个人都有所不同这要看你的项目下的.classpath文件里的配置的编译后文件的路径如:
我的J2EE项目中配置是:
<classpathentry kind="output" path="webapps/WEB-INF/classes"/>
我的J2SE项目中配置是:
<classpathentry kind="output" path="bin"/>
这个时候你的filename 的路径及就应该
J2EE 时:
filename="webapps/WEB-INF/classes/liujun/testtp.properties"
*仔细可能看的出来,其实前面一段就是取决于你的.classpath配置(path="webapps/WEB-INF/classes")
J2SE 时:
filename="bin/liujun/testtp.properties"
附:java类中获取路径的方法
Class clazz = this.getClass(); //获得当前类
URLClassLoader loader = (URLClassLoader)clazz.getClassLoader(); //获得类的加载器
URI u2=
null
;
try {
URI uri=loader.getResource( "").toURI();
//获得当前类的根路径如:C:\Program
Files\apache-tomcat-6.0.18\webapps\onsafeasiangames\WEB-INF\classes
u2=uri.resolve( "../../"); //获得当前路径的上两级目录(tomcat时就是项目的目录)
} catch (URISyntaxException e) {
e.printStackTrace();
}