博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java项目获取路径
阅读量:4625 次
发布时间:2019-06-09

本文共 1996 字,大约阅读时间需要 6 分钟。

感谢那些无私的人,分享他们的经验与常识。  

Java中使用的路径,分为两种:绝对路径和相对路径。

  web应用

  一般用request.getRealPath("/")或request.getRealPath("/config/")

  但现在不提倡使用request.getRealPath("/")了,大家可试用ServletContext.getRealPath("/")方法得到Web应用程序的根目录的绝对路径。
  要取得src的文件非常容易,因为src是默认的相对目录,比如你说要取得src下com目录的test.java文件,你只需要这样就够了
  File f = new File(com/test.java);

  但如果我要取得不在src目录或者WebRoot目录下的文件呢,而是要从src或者WebRoot同级的目录中取呢,比如说doc吧。

  比较常用的方法:
  String path = this.getServletContext().getRealPath("/");
  Properties p = new Properties();
  p.load(new FileInputStream(new File(path.substring(0,(path.lastIndexOf("\\WebRoot") + 1)) + "doc/db.properties")));
  System.out.println(p.getProperty("driverName"));

  如果在类中取不到ServletContext时,有两种方式可以做到:

  1)利用Java的类加载机制:调用 XXX.class.getClassLoader().getResource(""); 方法来获取到ClassPath , 然后处理获得WebRoot目录。
  这种方式只能是该class在WebRoot/WEB-INF/classes下才能生效, 如果该class被打包到一个jar文件中,则该方法失效。这时就应该用下面一种方式。
  2)spring框架的思路,在WEB-INF/web.xml中,创建一个webAppRootKey的param,指定一个值(默认为webapp.root)作为键值,然后通过Listener,或者Filter,或者Servlet 执行String   webAppRootKey = getServletContext().getRealPath("/"); 并将webAppRootKey对应的webapp.root 分别作为Key,Value写到System Properties系统属性中。之后在程序中通过System.getProperty("webapp.root")来获得WebRoot的物理路径。
  例子:

  1. XXX.class.getResource("")

  得到的是当前类FileTest.class文件的URI目录。不包括自己!
  如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
  atacarnet/src/com/evi/modules/atacarnet/action/
  2. XXX.class.getResource("/")
  得到的是当前的classpath的绝对URI路径。
  如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
  3. Thread.currentThread().getContextClassLoader().getResource("")
  得到的也是当前ClassPath的绝对URI路径
  如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
  推荐使用该方法获取。
  4. XXX.class.getClassLoader().getResource("") 或ClassLoader.getSystemResource("")
  得到的也是当前ClassPath的绝对URI路径。
  如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
  5.取得服务器相对路径
  System.getProperty("user.dir")
  例如:E:\apache-tomcat-5.5.16\apache-tomcat-5.5.16\bin

转载于:https://www.cnblogs.com/gdwg2046/archive/2012/11/29/scott_ding.html

你可能感兴趣的文章
团队项目总结2-服务器通信模型和顺序图
查看>>
hdu 1085 Holding Bin-Laden Captive!
查看>>
[周记]8.7~8.16
查看>>
递归定义
查看>>
kindeditor 代码高亮设置
查看>>
图的邻接表存储
查看>>
2018 leetcode
查看>>
PHP中获取当前页面的完整URL
查看>>
Chapter 4 Syntax Analysis
查看>>
vi/vim使用
查看>>
讨论Spring整合Mybatis时一级缓存失效得问题
查看>>
Maven私服配置Setting和Pom文件
查看>>
Xcode10 library not found for -lstdc++ 找不到问题
查看>>
Mysql 8.0.13如何重置密码
查看>>
发布功能完成
查看>>
excel 合并单元格
查看>>
How to Create Modifiers Using the API QP_MODIFIERS_PUB.PROCESS_MODIFIERS
查看>>
待飞笔记(第一天 )
查看>>
解惑好文:移动端H5页面高清多屏适配方案
查看>>
traefik添加多证书
查看>>