获取当前环境路径

    在项目中文件上传、下载,以及加载配置文件等的时候都存在获取当前文件的相对路径或绝对路径的情况。在Tomcat中一般不存在不能获取文件路径的问题,但是在多服务器处理中,因服务器的不同而获取的路径方式不统一,从而导致获取文件路径等存在差异性。

    代码如下

    /**
     * 通过类路径来取工程路
     * 
     * @return
     * @throws Exception
     */
    private String getAbsolutePathByClass() throws Exception {
        String webPath = this.getClass().getResource("/").getPath().replaceAll("^\\/", "");
        webPath = webPath.replaceAll("[\\\\\\/]+", "/");
        webPath = webPath.replaceAll("%20", " ");

        if (webPath.matches("^[a-zA-Z]:.*?$")) {

        } else {
            webPath = "/" + webPath;
        }

        webPath += "/";
        webPath = webPath.replaceAll("[\\\\\\/]+", "/");

        // 直接META-INF/context.xml来判断路径是否正(本例当前是根据Tomcat 6.0数据库连接池配置文件来验证获取文件路径是否成功,在实际使用中可根据自己项目来处理)
        File file = new File(webPath + "META-INF/context.xml");
        if (file.exists() && file.isFile()) {
            return webPath;
        } else {
            return null;
        }
    }

	/**
     * 通过struts servlet来取工程路径
     * 
     * @return
     */
    private String getAbsolutePathByResource() throws Exception {
        URL url = this.getServletContext().getResource("/");
        String path = new File(url.toURI()).getAbsolutePath();
        if (!path.endsWith("\\") && !path.endsWith("/")) {
            path += File.separator;
        }
        return path;
    }

 

    这样可以首先采用servlet方式来获取当前路径,在实际应用中也可以采用这样的方式(更具不同项目配置和代码编写方式决定):

String path = servlet.getServletContext().getRealPath("/"); 

 

    在weblogic、websphere等服务器上面获取不到的情况下可以采用第二种方式,也即就是获取路径的时候多一个 if(){}

     注意:在websphere中默认获取到的文件路径是不带最后一个[ \ ]或者[ / ]的,所以如果要支持websphere 建议加上如下代码

        if (!path.endsWith("/")) {
            path += File.separator;
        }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值