java 相对路径问题。

如图显示结构:java代码:Filefile=newFile("./xml/a.properties");和Filefile=newFile("xml/a.propert... 如图显示结构:
java代码:
File file =new File(" ./xml/a.properties") ;
和File file =new File(" xml/a.properties") ;
都可以成功

但为什么下面就会出错,我觉得应该下面才是对的啊:
File file =new File(" /xml/a.properties") ;

题目不难,希望可以说条理清晰 详细一点。
xml目录和src目录是并列的。
我的理解是: " / "表示相对于根目录, 根目录是 "dom4jtest"目录 ,所以应该用" /xml/a.properties " 才对。
而 " xml/a.properties" 应该表示java文件所在目录下的"xml/a.properties", 也就是"dom4jtest /src / test / dom4 j/ xml / a.properties" 才对啊
请问错在哪了,纠结纠结
展开
 我来答
小山山001
2011-07-20 · TA获得超过1159个赞
知道小有建树答主
回答量:1246
采纳率:0%
帮助的人:1268万
展开全部
在最前面加点的话就告诉file找的时候当前目录找不到,就去相对的路径去找,一般要相对路径的话都是加点,两个点点寻找的返回可能大些,但也值在项目目录里找,直接/的话,这个貌似要在web项目里使用,直接在普通的项目里可能不行,你可以试试不每个file的absolutepath输出一下看看都是什么结果
帮你找了下别人写的:
File类是用来构造文件或文件夹的类,在其构造函数中要求传入一个String类型的参数,用于指示文件所在的路径.以前一直使用绝对路径作为参数,其实这里也可以使用相对路径.使用绝对路径不用说,很容易就能定位到文件,那么使用了相对路径jvm如何定位文件的呢?

按照jdk Doc上的说法”绝对路径名是完整的路径名,不需要任何其他信息就可以定位自身表示的文件。相反,相对路径名必须使用来自其他路径名的信息进行解释。默认情况下,java.io 包中的类总是根据当前用户目录来分析相对路径名。此目录由系统属性 user.dir 指定,通常是 Java 虚拟机的调用目录.”

相对路径顾名思义,相对于某个路径,那么究竟相对于什么路径我们必须弄明白.按照上面jdk文档上讲的这个路径是”当前用户目录”也就是”java虚拟机的调用目录”.更明白的说这个路径其实是我们在哪里调用jvm的路径.举个例子:

假设有一java源文件Example.java在d盘根目录下,该文件不含package信息.我们进入命令行窗口,然后使用”d:”命令切换到d盘根目录下,然后用”javac Example.java”来编译此文件,编译无错后,会在d盘根目录下自动生成”Example.class”文件.我们在调用”java Example”来运行该程序.此时我们已经启动了一个jvm,这个jvm是在d盘根目录下被启动的,所以此jvm所加载的程序中File类的相对路径也就是相对这个路径的,即d盘根目录:D:\.同时” 当前用户目录”也是D:\.在System.getProperty(“user.dir”);系统变量”user.dir”存放的也是这个值.

我们可以多做几次试验,把”Example.class”移动到不同路径下,同时在那些路径下,执行”java Example”命令启动jvm,我们会发现这个”当前用户目录”是不断变化的,它的路径始终和我们在哪启动jvm的路径是一致的.

搞清了这些,我们可以使用相对路径来创建文件,例如:

File file = new File(“a.txt”);

File.createNewFile();

假设jvm是在”D:\”下启动的,那么a.txt就会生成在D:\a.txt;

此外,这个参数还可以使用一些常用的路径表示方法,例如”.”或”.\”代表当前目录,这个目录也就是jvm启动路径.所以如下代码能得到当前目录完整路径:

File f = new File(“.”);

String absolutePath = f.getAbsolutePath();

System.out.println(absolutePath);//D:\

最后要说说在eclipse中的情况:

Eclipse中启动jvm都是在项目根路径上启动的.比如有个项目名为blog,其完整路径为:D:\work\IDE\workspace\blog.那么这个路径就是jvm的启动路径了.所以以上代码如果在eclipse里运行,则输出结果为” D:\work\IDE\workspace\blog.”

Tomcat中的情况.

如果在tomcat中运行web应用,此时,如果我们在某个类中使用如下代码:

File f = new File(“.”);

String absolutePath = f.getAbsolutePath();

System.out.println(absolutePath);

那么输出的将是tomcat下的bin目录.我的机器就是” D:\work\server\jakarta-tomcat-5.0.28\bin\.”,由此可以看出tomcat服务器是在bin目录下启动jvm的.其实是在bin目录下的” catalina.bat”文件中启动jvm的.
wzjlovemjx
推荐于2017-11-24 · TA获得超过6528个赞
知道小有建树答主
回答量:457
采纳率:0%
帮助的人:777万
展开全部
下面的当前路径都是你的工程目录
File file =new File("./xml/a.properties") ;
中的./xml/a.properties中的.是指当前路径哪么这句就是当前路径下的xml下的a.properties
File file1 =new File("xml/a.properties") ;
中的xml/a.properties也代表了它会在当前路径下找xml然后找xml下的a.properties
File file2 =new File("/xml/a.properties") ;而这个中的/xml/a.properties表示绝对路径。在linux下他表示在xml文件下的a.properties而不是当前文件夹下的!windows的这个路径表示Class文件所在路径
追问
当前路径指的是什么???    /xml/a.properties 中第一个"/" 不是表示相对于根目录的意思吗?
追答
当前路径都是你的工程目录即dom4jtest文件夹。
是阿。你的跟目录是什么呢??
在linux下你这样写就是文件系统的xml目录下的a.properties
而window里面根目录是指 根目录指逻辑驱动器的最上一级目录,
它是相对子目录来说的。打开“我的电脑”,双击C盘就进入C盘的根目录,双击D盘就进入D盘的根目录。其它类推。至于根目录你的好好看看参考资料

参考资料: http://baike.baidu.com/view/1061154.htm

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cai_love_feng
2011-07-20 · TA获得超过998个赞
知道小有建树答主
回答量:416
采纳率:100%
帮助的人:288万
展开全部
路径不要以/开头
File file =new File(" ./xml/a.properties") ;
.代表当期路径 所以可以成功
File file =new File(" xml/a.properties") ;
什么都不加的话,默认是当前路径下,后面就是xml文件夹下的……
这个是相对路径
所以这2中都是对的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
翟向天
2011-07-20 · 超过10用户采纳过TA的回答
知道答主
回答量:41
采纳率:0%
帮助的人:47.3万
展开全部
File file =new File(" ./xml/a.properties") ;
.代表当期路径 所以可以成功
File file =new File(" xml/a.properties") ;
什么都不加的话,默认是当前路径下,后面就是xml文件夹下的……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wwwz时代
2018-03-31 · TA获得超过7284个赞
知道小有建树答主
回答量:5
采纳率:100%
帮助的人:5458
展开全部

这个根目录是不是按工程的目录算的,按操作系统的来算的~~!可以用如下代码测试:

File f = new File("/");

System.out.println(f.getAbsolutePath())。

java中的file类中的file构造方法中:File f = new File("a.txt");谁能告诉我这个文件会创建在哪里?

你应该问的是: 相对路径和绝对路径;

new File("D:/b.text");   //绝对路径

new File("a.txt");  //你的项目下

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式