我是靠谱客的博主 雪白电话,最近开发中收集的这篇文章主要介绍Tomcat下获取项目绝对路径问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 作者:王奎            欢迎访问我的网站:www.marksaas.com

昨天看到一篇文章是关于Resin ClassLoader下获取项目的绝对路径,原文链接:http://coolshell.cn/articles/6112.html

我就想在Tomcat下试一下,结果报了空指针的错,D:Tomcat%206webappscloudWEB-INFclassesb.txt (系统找不到指定的路径。)

我先来把原文章的问题和测试代码来说一下吧。

原文章作者的思路是

  1. 定义一个Servlet,然后在该Servlet中调用Path类的getPath方法,getPath方法返回工程classpath的绝对路径,显示在jsp中。
  2. 另外在Path类中,通过Class的getResourceAsStream读取当前工程classpath路径中的a.txt文件,写入到getResource路径下的b.txt。
  3. 测试代码如下:Path.java
    public class Path {
    public String getPath() throws IOException
    {
    InputStream is = this.getClass().getResourceAsStream("/a.txt");
    File file = new File(Path.class.getResource("/").getPath()+"/b.txt");
    OutputStream os = new FileOutputStream(file);
    int bytesRead = 0;
    byte[] buffer = new byte[8192];
    while ((bytesRead = is.read(buffer, 0, 8192)) != -1) {
    os.write(buffer, 0, bytesRead);
    }
    os.close();
    is.close();
    return this.getClass().getResource("/").getPath();
    }
    }
    PathServlet.java
    public class PathServlet extends HttpServlet {
    private static final long serialVersionUID = 4443655831011903288L;
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
    Path path = new Path();
    request.setAttribute("path", path.getPath());
    PrintWriter out = response.getWriter();
    out.println("Class.getResource('/').getPath():" + path.getPath());
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
    doGet(request, response);
    }
    }
    来说一下我的测试结果吧,我的后报的错误是D:Tomcat%206webappscloudWEB-INFclassesb.txt (系统找不到指定的路径。)很明显是再读取b.txt是报错了,我们用的是File file=new File(Path.class.getResource("/").getPath()+"/b.txt");来读取b.tex的,结构读取的时候读到D:Tomcat%206webappscloudWEB-INFclassesb.txt上了,正确路径应该是D:TomcatwebappscloudWEB-INFclassesb.txt,不知道怎么加上%206字符了,我然后在网上查,查到当前类用的类加载器好像用的什么代理什么的,我也有点晕,有知道的童鞋欢迎探讨。。                                                       以后再web环境下还是用servlet来获取项目路径比较好,不要用当前类来获取,很可能出各种莫名其妙的问题。。

最后

以上就是雪白电话为你收集整理的Tomcat下获取项目绝对路径问题的全部内容,希望文章能够帮你解决Tomcat下获取项目绝对路径问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部