您现在的位置是:首页 > 文章详情

Java中的路径问题

日期:2018-06-18点击:419

java中路径问题看似不大,但是有时候细节问题导致的是 当前路径不存在 常常伴随左右。来总结一下路径问题吧。

路径不存在:

首先必须注意的是 如果FileInputStream中的路径如果不存在的话,就会报错,如果路径存在而文件不存在 就会创建对应的文件。

/代表位置

分两种情况:
目标资源是给谁使用的。

给服务器使用的: / 表示在当前web应用的根目录(webRoot 给浏览器使用的: / 表示在webapps的根目录下

举例:
转发:就是服务器调用,就是内部调用,/代表当前项目:

request.getRequestDispatcher("/target.html") .forward(request, response);

请求重定向:就是浏览器调用。

response.sendRedirect("/day11/target.html");

html页面的超连接href:浏览器调用。

response.getWriter().write("<html><body><a href= '/day11/target.html'>超链接</a></body></html>");

html页面中的form提交地址:浏览器调用。

response.getWriter().write("<html><body><form action= '/day11/target.html'><input type='submit'/></form> </body></html>");

. 地址问题

. 代表java命令运行目录。

Java项目:

正常情况下.代表Class的位置,即bin目录下。

而Eclipse会自动执行一个动作 就是Set pathClass=class位置。
这样 你在哪里都可以运行这个class,但是.代表的却是当前运行的位置。
所以.代表当前项目的根目录

JavaWeb项目:

java运行命令 在tomcat/bin目录下

读取文件。在web项目下不要这样读取。因为.表示在tomcat/bin目录下,而此时没有src

File file = new File("./src/db.properties"); FileInputStream in = new FileInputStream(file);

结论: 在web项目中, . 代表在tomcat/bin目录下开始,所以不能使用这种相对路径。

使用web应用下加载资源文件的方法: 适应任何项目以及其他电脑

  1. getRealPath读取,返回资源文件的绝对路径
String path = this.getServletContext().getRealPath ("/WEB-INF/classes/db.properties"); File file = new File(path); FileInputStream in = new FileInputStream(file);
  1. getResourceAsStream() 得到资源文件,返回的是输入流
InputStream in = this.getServletContext(). getResourceAsStream("/WEB-INF/classes/db.properties");

得到web应用路径:

web应用路径:部署到tomcat服务器上运行的web应用名称

 //1.得到ServletContext对象 ServletContext context = this.getServletContext(); 2.得到web应用路径 String contextPath = context.getContextPath(); System.out.println(contextPath); //应用到请求重定向 response.sendRedirect(contextPath+"/index.html");
原文链接:https://yq.aliyun.com/articles/602957
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章