java中路径的问题关于eclipse项目中的路径问题在workspace中的路径如下test ? ? ? ? ? ? ? ? -----------
java中路径的问题
关于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();}