黑马程序员技术交流社区
标题:
IO流中相对路径和绝对路径的区别
[打印本页]
作者:
王雷
时间:
2012-10-31 10:52
标题:
IO流中相对路径和绝对路径的区别
IO流中相对路径和绝对路径的区别
相信很多同学都有不解,求大神指点一二
作者:
王虎
时间:
2012-10-31 11:00
相对路径时当前文件所在路径;
绝对路径是文件所在的完整路径,直到磁盘根目录那一个节点
作者:
杨政
时间:
2012-10-31 11:02
绝对路径就是从硬盘分区开始的完整路径;
相对路径就是相对某个基准目录的路径,感觉就是从基准目录下开始的。
作者:
xuchulong1
时间:
2012-10-31 11:42
如果你学过linux,相信这个就不是问题了
现在拿eclipse来说下,你的工程是在哪个目录下的,拿我的举例是在 E:\1_MyDocuments\workspace\reflect\src 这个目录下,那我在我的程序中要去访问某个文件,那我可以直接写这个文件名,程序就能找到,这就是相对于我的目录去找的,那就是相对路径
绝对路径的话,我不管你程序目录在哪里,我就在程序里直接指定这个目录E:\1_MyDocuments\workspace\reflect\src\a.txt 只要我们的路径是对的,那就能访问到。
绝对路径有它的局限性,因为你的程序如果拷贝到别人的电脑上使用的话,就会出现麻烦,因为他的a.txt不一定是放在你放的这个目录下,所以就会出状况。如果用相对路径的话,那它就会先到程序目录下去找或者建立,这样就不会出错。
希望能帮助你理解
作者:
奋斗的青春
时间:
2012-10-31 11:52
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的.
作者:
罗力
时间:
2012-10-31 11:53
绝对路径是说的文件在硬盘上的位置,相对路径是说你的eclipse上相对于你的工程目录上的位置。
作者:
齐连涛
时间:
2012-10-31 11:55
相对路径可以理解为父目录以上的路径是不确定的,可以改变的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2