绝对路径和相对路径

本文详细介绍了在Java中获取路径的方法,包括绝对路径和相对路径的概念,重点讲解了JSP/Servlet环境中路径获取的方式,如使用request.getRealPath()、ServletContext.getRealPath()等方法,并对比了不同方法获取路径的区别。
2009 - 01 - 06

java 获取路径的方法

关键字: java 获取路径的方法
一、关于绝对路径和相对路径
1.基本概念的理解绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:xyz est.txt代表了test.txt文件的绝对路径。http://www.s.com/inx.htm也代表了一个URL绝对路径。相对路径:相对于某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在Servlet中,"/"代表Web应用的跟目录。和物理路径的相对表示。例如:"./" 代表当前目录,"../"代表上级目录。这种类似的表示,也是属于相对路径。另外关于URI,URL,URN等内容,请参考RFC相关文档标准。RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax,(http://www.ietf.org/rfc/rfc2396.txt)2.关于JSP/Servlet中的相对路径和绝对路径。 2.1服务器端的地址服务器端的相对地址指的是相对于你的web应用的地址,这个地址是在服务器端解析的(不同于html和javascript中的相对地址,他们是由客户端浏览器解析的)
1、request.getRealPath
方法:request.getRealPath("/")得到的路径:C:/Program Files/Apache Software Foundation/Tomcat 5.5/webapps/strutsTest/
方法:request.getRealPath(".")得到的路径:C:/Program Files/Apache Software Foundation/Tomcat 5.5/webapps/strutsTest/.
方法:request.getRealPath("")得到的路径:C:/Program Files/Apache Software Foundation/Tomcat 5.5/webapps/strutsTest
request.getRealPath("web.xml")C:/Program Files/Apache Software Foundation/Tomcat 5.5/webapps/strutsTest/web.xml
2、request.getParameter("");    ActionForm.getMyFile();
方法:String filepath = request.getParameter("myFile");得到的路径:D:/VSS安装目录/users.txt
方法:String filepath = ActionForm.getMyFile();得到的路径:D:/VSS安装目录/users.txt
--------------------------------------------------strutsTest 为工程名
myFile 在ActionForm中,为private String myFile;在jsp页面中:为<html:file property="myFile"></html:file>
--------------------------------------------------
3、获得系统路径
在Application中: System.getProperty("user.dir")
在Servlet中: ServletContext servletContext = config.getServletContext(); String rootPath = servletContext.getRealPath("/");
在jsp中:application.getRealPath("")
4、其他1
1.可以在servlet的init方法里
String path = getServletContext().getRealPath("/");
这将获取web项目的全路径
例如 :E:/eclipseM9/workspace/tree/
tree是我web项目的根目录
2.你也可以随时在任意的class里调用
this.getClass().getClassLoader().getResource("").getPath();
这将获取到classes目录的全路径
例如 : /D:/workspace/strutsTest/WebRoot/WEB-INF/classes/
还有 this.getClass().getResource("").getPath().toString();
这将获取 到 /D:/workspace/strutsTest/WebRoot/WEB-INF/classes/bl/
这个方法也可以不在web环境里确定路径,比较好用
3.request.getContextPath();
获得web根的上下文环境
如 /tree
tree是我的web项目的root context
5、其他2
java获取路径几种途径-
jdk如何判断程序中的路径呢?一般在编程中,文件路径分为相对路径和绝对路径,绝对路径是比较好处理的,但是不灵活,因此我们在编程中对文件进行操作的时候,一般都是读取文件的相对路径,相对路径可能会复杂一点,但是也是比较简单的,相对的路径,主要是相对于谁,可以是类加载器的路径,或者是当前 java文件下的路径,在jsp编程中可能是相对于站点的路径,相对于站点的路径,我们可以通过 getServletContext().getRealPath("/") 和request.getRealPath("/"):这个是取得站点的绝对路径; 而getContextPath():取得站点的虚拟路径;
2:class.getClassLoader.getPath():取得类加载器的路径:什么是类加载器呢?一般类加载器有系统的和用户自己定义的;系统的ClassLoader就是jdk提供的,他的路径就是jdk下的路径,或者在jsp编程,比如Tomcat ,取得的类加载器的位置就是tomaca自己设计的加载器的路径,明白了这些之后,对于文件路径的操作就会相当的清楚,我们在编程的时候,只要想清楚我们所操作的文件是相对于什么路径下的,取得相对路径就可以了.
6、总结
1、获取web服务器下的文件路径request.getRealPath("/")application.getRealPath("")【jsp中 】ServletContext().getRealPath("")
System.getProperty("user.dir")【不同位置调用,获取的路径是动态变化的】
2、获取本地路径
jsp中,<html:file property="myFile"/>
request.getParameter("myFile");ActionForm.getMyFile();获取的值相同:如D:/VSS安装目录/users.txt
*********************************
this.getClass().getClassLoader().getResource("").getPath();==/D:/workspace/strutsTest/WebRoot/WEB-INF/classes/this.getClass().getResource("").getPath().toString();==/D:/workspace/strutsTest/WebRoot/WEB-INF/classes/bl/
3、获取相对路径
request.getContextPath();
如:/strutsTest
远程服务器绝对路径相对路径是用于定位服务器上文件或资源位置的两种方式。 ### 概念 - **绝对路径**:绝对路径是从根目录开始完整描述文件或资源位置的路径。在Linux系统中,根目录用 `/` 表示;在访问服务器资源时,完整的URL就是一种绝对路径的体现,如 `http://localhost:8080/test/con/test1`,它包含了服务器地址、端口号、项目工程名、表现层映射路径方法映射路径等完整信息 [^1][^2]。 - **相对路径**:相对路径不是从根目录开始写起,而是从当前所在的工作目录开始写起。在表示文件存储位置时,常使用当前目录(用 `.` 表示)父目录(用 `..` 表示)。在服务器访问中,页面访问请求里相对路径相当于在工程根目录;服务器方法中,相对路径相当于当前路径的同级目录 [^1][^2]。 ### 区别 - **起始点不同**:绝对路径从根目录开始,能唯一确定文件或资源的位置;相对路径从当前工作目录开始,其指向的位置依赖于当前所在的目录 [^1]。 - **完整性不同**:绝对路径包含完整的路径信息,不依赖当前工作目录;相对路径只包含相对于当前目录的部分路径信息,需要结合当前目录才能确定文件或资源的位置 [^1][^2]。 ### 使用方法 - **绝对路径的使用**:在需要明确指定文件或资源位置,不依赖当前工作目录时使用。例如在配置日志备份到FTP/SFTP服务器时,需要指定服务器上的绝对路径来确保日志文件能准确上传到指定位置。在页面访问请求中,如果要访问服务器上的特定资源,使用绝对路径需要自己加上工程名,如 `/test/con/test1` 相当于 `http://localhost:8080/test/con/test1` [^2][^3]。 - **相对路径的使用**:在当前工作目录已知,且文件或资源与当前目录有相对关系时使用。在页面访问请求中,相对路径相当于在工程根目录;在服务器方法中,相对路径相当于当前路径的同级目录。例如当前工作目录是 `http://localhost:8080/test/con/`,使用相对路径 `test1` 就相当于访问 `http://localhost:8080/test/con/test1` [^2]。 ### 代码示例 以下是Python中使用绝对路径相对路径打开文件的示例: ```python # 使用绝对路径打开文件 try: with open('/home/user/documents/example.txt', 'r') as file: content = file.read() print(content) except FileNotFoundError: print("文件未找到") # 使用相对路径打开文件 try: with open('./example.txt', 'r') as file: content = file.read() print(content) except FileNotFoundError: print("文件未找到") ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值