获取项目路径

欢迎光临我的博客[http://poetize.cn],前端使用Vue2,聊天室使用Vue3,后台使用Spring Boot

/表示文件根目录(web表示项目目录)
./ 表示文件目前所在的目录(写与不写等效)
../ 表示文件的上一层目录
绝对路径 = 参考路径 + 相对路径

// 第一种:获取类加载的根路径
this.getClass().getResource("/").getPath();    /C:/Users/My/IdeaProjects/OTO/target/classes/
 
// 获取当前类的所在工程路径; 如果不加“/”  获取当前类的加载目录
this.getClass().getResource("").getPath();    /C:/Users/My/IdeaProjects/OTO/target/classes/entity/

// 第二种:获取类加载的根路径(不允许以"/"开头)
this.getClass().getClassLoader().getResource("");    file:/C:/Users/My/IdeaProjects/OTO/target/classes/(URL)

this.getClass().getClassLoader().getResource("").getPath();    /C:/Users/My/IdeaProjects/OTO/target/classes/

// 第三种:通过Thread(不允许以"/"开头)
Thread.currentThread().getContextClassLoader().getResource("").getFile();    /C:/Users/My/IdeaProjects/OTO/target/classes/
获取JavaEE项目的资源路径:
getRealPath()方法中的参数, 是以WEB-INF目录的父目录为根目录进行查找
获取WEB-INF目录的父目录下的资源,而且src的源码编译后的class文件,也会存放在WEB-INF/classes文件夹下,
所以获取JavaEE资源的方法,也适用于获取Java普通资源

得到当前工程的根路径
String path = request.getContextPath();        /sell

得到真实目录
String path = request.getServletContext().getRealPath(“/”) ;         E:\apache-tomcat-7.0.65\webapps\sell\


servletContext.getRealPath("");       D:\apache-tomcat-7.0.52\项目名

servletContext.getRealPath("/");       D:\apache-tomcat-7.0.52\项目名\

servletContext.getRealPath("/文件名/资源名");       D:\apache-tomcat-7.0.52\项目名\文件名\资源名
jsp中取得路径:

以工程名为TEST为例:

(1)得到包含工程名的当前页面全路径:request.getRequestURI()
结果:/TEST/test.jsp

(2)得到工程名:request.getContextPath()
结果:/TEST

(3)得到当前页面所在目录下全名称:request.getServletPath()
结果:如果页面在jsp目录下 /TEST/jsp/test.jsp

(4)得到页面所在服务器的全路径:application.getRealPath("页面.jsp")
结果:D:\resin\webapps\TEST\test.jsp

(5)得到页面所在服务器的绝对路径:absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();
结果:D:\resin\webapps\TEST

2.在类中取得路径:

(1)类的绝对路径:Class.class.getClass().getResource("/").getPath()
结果:/D:/TEST/WebRoot/WEB-INF/classes/

(2)得到工程的路径:System.getProperty("user.dir")
结果:D:\TEST

3.在Servlet中取得路径:

(1)得到工程目录:request.getSession().getServletContext().getRealPath("") 参数可具体到包名。
结果:E:\Tomcat\webapps\TEST

request.getSession().getServletContext().getRealPath("/upload") 参数可具体到包名。
结果:E:\Tomcat\webapps\TEST\upload

(2)得到IE地址栏地址:request.getRequestURL()
结果:http://localhost:8080/TEST/test

(3)得到相对地址:request.getRequestURI()
结果:/TEST/tes

示例

public class PathUtils {
    //获取系统分隔符
    private static String separator = System.getProperty("file.separator");

    //获取图片基础路径
    public static String getImgBasePath() {
        String os = System.getProperty("os.name");
        String basePath = "";
        if (os.toLowerCase().startsWith("win")) {
            basePath = "D:/image/";
        } else {
            basePath = "/home/image/";
        }
        basePath = basePath.replace("/", separator);
        return basePath;
    }

    //获取店铺条目下不同店铺的图片路径
    public static String getShopPath(long shopId) {
        String imagePath = "shop/" + shopId + "/";
        return imagePath.replace("/", separator);
    }
}
public class ImageUtils {
    //随机数
    private static final Random r=new Random();

    //储存图片并获取店铺图片路径(基础路径+店铺分类路径+随机文件名)
    public static String saveImgAndGetPath(CommonsMultipartFile multipartFile,long shopId){
        String path = PathUtils.getImgBasePath()+PathUtils.getShopPath(shopId)+getRandomFileName()+getExtensin(multipartFile);
        File file = new File(path);
        if(!file.getParentFile().exists()){
            file.getParentFile().mkdirs();
        }
        try {
            Thumbnails.of(multipartFile.getInputStream()).toFile(file);
        } catch (IOException e) {
            throw new ShopException("创建缩略图失败");
        }
        return path;
    }

    //获取文件的扩展名
    public static String getExtensin(CommonsMultipartFile multipartFile){
        String originalFilename = multipartFile.getOriginalFilename();
        return originalFilename.substring(originalFilename.lastIndexOf('.'));
    }

    //随机文件名:当前时间 + 随机五位数
    public static String getRandomFileName(){
        //获取随机五位数
        int random = r.nextInt(89999)+10000;
        String newTime = sdf.format(new Date());
        return newTime+random;
    }
}
posted @ 2019-08-15 21:07  LittleDonkey  阅读(324)  评论(0编辑  收藏  举报