Java 获取项目webapp, root,classpath各种路径工具类

(Last Updated On: 2019-01-14)

Java 获取webapp,root,classpath等各种路径主要是利用了System.getProperty(“user.dir”)获取你工程的绝对路径。然后再做相关操作。有的IDE如Intellij Idea在debug时路径会重定向到target下,然后目录和正常的目录略有差别,如果能拿到request在使用的过程中可以自己稍作修改,拼接。

/**
 * 工程路径获取
 * Created by Water on 2017/7/28.
 */
public class PathUtils {
    /**
     * 获取到classes目录
     * @return path
     */
    public static String getClassPath(){
        String systemName = System.getProperty("os.name");

        //判断当前环境,如果是Windows 要截取路径的第一个 '/'
        if(!StringUtils.isBlank(systemName) && systemName.indexOf("Windows") !=-1){
            return PathUtils.class.getResource("/").getFile().toString().substring(1);
        }else{
            return PathUtils.class.getResource("/").getFile().toString();
        }
    }
    /**
     * 获取当前对象的路径
     * @param object
     * @return path
     */
    public static String getObjectPath(Object object){
        return object.getClass().getResource(".").getFile().toString();
    }
    /**
     * 获取到项目的路径
     * @return path
     */
    public static String getProjectPath(){
        return System.getProperty("user.dir");
    }
    /**
     * 获取 root目录
     * @return path
     */
    public static String getRootPath(){
        return getWEB_INF().replace("WEB-INF/", "");
    }
    /**
     * 获取输出HTML目录
     * @return
     */
    public static String getHTMLPath(){
        return getFreePath() + "html/html/";
    }
    /**
     * 获取输出FTL目录
     * @return
     */
    public static String getFTLPath(){
        return getFreePath() + "html/ftl/";
    }
    /**
     * 获取 web-inf目录
     * @return path
     */
    public static String getWEB_INF(){
        return getClassPath().replace("classes/", "");
    }
    /**
     * 获取模版文件夹路径
     * @return path
     */
    public static String getFreePath(){
        return getWEB_INF() + "ftl/";
    }
    /**
     * 文本换行,因为Linux  和 Windows 的换行符不一样
     * @return
     */
    public static String nextLine(){
        String nextLine = System.getProperty("line.separator");
        return nextLine;
    }
    /**
     * 获取images 路径
     * @return
     */
    public static String getImages(){
        return getRootPath() + "images/" ;
    }
    /**
     * 获取sitemap 路径
     * @return
     */
    public static String getSiteMapPath(){
        return getRootPath() + "txt/sitemap" ;
    }
    /**
     * 获取Txt 路径
     * @return
     */
    public static String getTxt(){
        return getRootPath() + "txt" ;
    }

}

其他

ServletActionContext.getServletContext().getRealPath(“/”)

可以方便获取webapp目录,servletContext可以从HttpServletRequest中获取,如果是springmvc可以直接使用注解获得实例。

@Autowired
ServletContext servletContext;

发表评论

电子邮件地址不会被公开。 必填项已用*标注

解决 : *
15 × 29 =


此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据