• Java获取Window和Linux系统的项目ClassPath路径


    【本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究。若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!】

    不啰嗦,直接复制工具类

    /**
     * 在windows和linux系统下均可正常使用
     * Create by yster@foxmail.com 2018/6/6/006 14:51
     */
    public class PathUtil {
        //获取项目的根路径
        public final static String classPath;
    
        static {
            //获取的是classpath路径,适用于读取resources下资源
            classPath = Thread.currentThread().getContextClassLoader().getResource("").getPath();
        }
    
        /**
         * 项目根目录
         */
        public static String getRootPath() {
            return RootPath("");
        }
    
        /**
         * 自定义追加路径
         */
        public static String getRootPath(String u_path) {
            return RootPath("/" + u_path);
        }
    
        /**
         * 私有处理方法
         */
        private static String RootPath(String u_path) {
            String rootPath = "";
            //windows下
            if ("\".equals(File.separator)) {
                //System.out.println(classPath);
                rootPath = classPath + u_path;
                rootPath = rootPath.replaceAll("/", "\\");
                if (rootPath.substring(0, 1).equals("\")) {
                    rootPath = rootPath.substring(1);
                }
            }
            //linux下
            if ("/".equals(File.separator)) {
                //System.out.println(classPath);
                rootPath = classPath + u_path;
                rootPath = rootPath.replaceAll("\\", "/");
            }
            return rootPath;
        }
    
        //更多扩展方法任你发挥
    
    }
    

    使用方法

    【本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究。若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!】

    //自定义追加路径并格式化
    System.out.println(ProjectPath.getRootPath("userImg/test.txt"));
    //获取根目录
    System.out.println(ProjectPath.getRootPath());
    

    注意

    在使用System.getProperty("user.dir")时:

    如果是在IDE中启动,则获得的路径为D:xxxxprojectName,包括项目名;

    如果是以Jar包方式启动,得到该jar包所在的路径。如project.jar在D:xxxx下,获得的路径就是D:xxxx

    但是如果是以war包方式启动获得的是:D:apache-tomcat-9.0.7in

    所以此方法适合不依赖Tomcat容器(或者内嵌Tomcat如SpringBoot)的项目。

    版权声明

    【本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究。若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!】

  • 相关阅读:
    java IO流详解
    java设计模式之单例模式(几种写法及比较)
    JS定时刷新页面及跳转页面
    遍历map的四种方法
    String 中去掉空格
    TSP问题_遗传算法(STL大量使用)
    无向图的深度优先生成树和广度优先生成树
    Prim算法求最小生成树
    哈夫曼编码_静态库
    中序线索化二叉树
  • 原文地址:https://www.cnblogs.com/onblog/p/13043392.html
Copyright © 2020-2023  润新知