java项目路径 文件路径 相对路径 整理

使用VNC可视化Docker容器 Docker容器可视化 阅读详情
package com.wbtask;

import java.io.File;
import java.net.URL;

public class UrlUtil {
    /**
     * 取得当前类所在的文件
     * @param clazz
     * @return
     */
    public static File getClassFile(Class clazz){
        URL path = clazz.getResource(clazz.getName().substring(clazz.getName().lastIndexOf(".")+1)+".classs");
        if(path == null){
            String name = clazz.getName().replaceAll("[.]", "/");
            path = clazz.getResource("/"+name+".class");
        }
        return new File(path.getFile());
    }
    /**
     * 得到当前类的路径 
     * @param clazz
     * @return
     */
    public static String getClassFilePath(Class clazz){
        try{
            return java.net.URLDecoder.decode(getClassFile(clazz).getAbsolutePath(),"UTF-8");
        }catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
            return "";
        }
    }
    
    /**
     * 取得当前类所在的ClassPath目录,比如tomcat下的classes路径
     * @param clazz
     * @return
     */
    public static File getClassPathFile(Class clazz){
        File file = getClassFile(clazz);
        for(int i=0,count = clazz.getName().split("[.]").length; i<count; i++)
            file = file.getParentFile();
        if(file.getName().toUpperCase().endsWith(".JAR!")){
            file = file.getParentFile();
        }
        return file;
    }
    /**
     * 取得当前类所在的ClassPath路径
     * @param clazz
     * @return
     */
    public static String getClassPath(Class clazz){
        try{
            return java.net.URLDecoder.decode(getClassPathFile(clazz).getAbsolutePath(),"UTF-8");
        }catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
            return "";
        }
    }
    
    public static void main(String[] args){
        System.out.println(getClassFilePath(UrlUtil.class));
        System.out.println(getClassPath(UrlUtil.class));
    }
}
 

几种不太安全的:

1. new File(path),这个方法的路径到底在那里取决于调用java命令的起始位置定义在哪里,

  tomcat/bin下面的catalina.bat调用了java,所以在tomcat下相对起始位置是tomcat/bin,但是eclipse启动时,起始位置 是eclipse的项目路径。 

2.类.class.getClassLoader().getResource("").getPath()

  如果使用了此方法,这把决定权交给了类加载器,例如tomcat的类加载是非委托机制的,而weblogic的类加载是委托的。大部分情况下是安全的。

3.类.class.getResource("")

  这是个好方法,但局限性在于如果类文件在jar中的话,那么在打jar包时需要将文件夹一起打进去,否则会返回null,jar文件实际上就是zip文件,zip文件中:文件就是文件,文件夹是文件夹,不是关联在一起的,很多开源的jar包就没有把目录打进去只打了classes文件,虽然你能年到目录层次结构,但是调用类.class.getResource("")会返回null.因为文件的目录结构和文件夹本身是两回事。 


Java中使用的路径,分为两种:绝对路径和相对路径。归根结底,Java本质上只能使用绝对路径来寻找资源。所有的相对路径寻找资源的方法,都不过是一些便利方法。不过是API在底层帮助我们构建了绝对路径,从而找到资源的!

  在开发Web方面的应用时, 经常需要获取服务器中当前WebRoot的物理路径。

  如果是Servlet , Action , Controller, 或者Filter , Listener , 拦截器等相关类时, 我们只需要获得ServletContext, 然后通过ServletContext.getRealPath("/")来获取当前应用在服务器上的物理地址。

  如果在类中取不到ServletContext时,有两种方式可以做到:

  1)利用Java的类加载机制:调用 XXX.class.getClassLoader().getResource(""); 方法来获取到ClassPath , 然后处理获得WebRoot目录。
  这种方式只能是该class在WebRoot/WEB-INF/classes下才能生效, 如果该class被打包到一个jar文件中, 则该方法失效。这时就应该用下面一种方式。

  2)spring框架的思路,在WEB-INF/web.xml中,创建一个webAppRootKey的param,指定一个值(默认为webapp.root)作为键值,然后通过Listener, 或者Filter,或者Servlet 执行String webAppRootKey = getServletContext().getRealPath("/"); 并将webAppRootKey对应的webapp.root 分别作为Key,Value写到System Properties系统属性中。之后在程序中通过System.getProperty("webapp.root")来获得WebRoot的物理路径。

  根据第二种的思路,我们还可以再扩展一下。不过对于在部署在一台服务器中的应用来说,若还不是你所需请再往下看。

  下面是一些得到classpath和当前类的绝对路径的一些方法。你可使用其中的一些方法来得到你需要的资源的绝对路径:

  1.DebitNoteAction.class.getResource("")
  得到的是当前类FileTest.class文件的URI目录。不包括自己!
  如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
  atacarnet/src/com/evi/modules/atacarnet/action/

  2.DebitNoteAction.class.getResource("/")
  得到的是当前的classpath的绝对URI路径。
  如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/

  3.Thread.currentThread().getContextClassLoader().getResource("")
  得到的也是当前ClassPath的绝对URI路径
  如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/
  推荐使用该方法获取。

  4.DebitNoteAction.class.getClassLoader().getResource("") 或ClassLoader.getSystemResource("")
  得到的也是当前ClassPath的绝对URI路径。
  如:file:/D:/eclipse/springTest/WebRoot/WEB-INF/classes/

  5.取得服务器相对路径
  System.getProperty("user.dir")
  例如:E:\apache-tomcat-5.5.16\apache-tomcat-5.5.16\bin

  6.取得项目中的绝对路径
  一般用request.getRealPath("/")或request.getRealPath("/config/")

  但现在不提倡使用request.getRealPath("/")了,大家可试用ServletContext.getRealPath("/")方法得到Web应用程序的根目录的绝对路径。

  要取得src的文件非常容易,因为src是默认的相对目录,比如你说要取得src下com目录的test.java文件,你只需要这样就够了
  File f = new File(com/test.java);

  但如果我要取得不在src目录或者WebRoot目录下的文件呢,而是要从src或者WebRoot同级的目录中取呢,比如说doc吧。
  我的硬方法是这样实现的:
  String path = this.getServletContext().getRealPath("/");
  Properties p = new Properties();
  p.load(new FileInputStream(new File(path.substring(0,(path.lastIndexOf("\\WebRoot") + 1)) + "doc/db.properties")));
  System.out.println(p.getProperty("driverName"));
-------------------------------
另:Request中getContextPath、getServletPath、getRequestURI、getRequestURL、getRealPath的区别

  假定你的web application 名称为news,你在浏览器中输入请求路径:http://localhost:8080/news/main/list.jsp

  则执行下面向行代码后打印出如下结果:

1、 System.out.println(request.getContextPath());
  打印结果:/news

2、System.out.println(request.getServletPath());
  打印结果:/main/list.jsp

3、 System.out.println(request.getRequestURI());
  打印结果:/news/main/list.jsp

4、System.out.println(request.getRequestURL());
  打印结果:http://localhost:8080/news/main/list.jsp

5、 System.out.println(request.getRealPath("/"));
  打印结果:F:\Tomcat 6.0\webapps\news\test





Python爬虫实战:如何爬取12306列车信息 本文介绍了如何使用Python编写爬虫,抓取12306列车信息。我们讲解了如何分析12306的列车数据接口,如何发送HTTP请求,解析返回的JSON数据,并将数据保存到本地文件中。我们还讨论了如何绕过反爬虫机制,如使用随机User-Agent和设置请求延时。通过这个实战项目,你应该掌握了如何爬取并解析来自公共API的数据,同时提高了你的爬虫技能。这些技能不仅适用于12306列车信息抓取,也可以广泛应用于其他需要抓取JSON数据的网站。 阅读详情

相关推荐

STC8H单片机ADC实战:从读取电位器到串口绘图,12位精度玩起来

本文详细介绍了STC8H单片机的ADC功能实战应用,从读取电位器到串口绘图,展示了12位精度的实现方法。通过硬件连接、代码配置、串口数据传输及高级优化技巧,帮助开发者快速掌握ADC模块的使用,适用于各种传感器数据采集和信号处理场景。

weixin_28278377的博客 345

Java相对路径与类路径详解

相对的是工作目录# 相对的是class文件所在的根目录# 相对的是ClassPathDemo.class所在的目录# 相对的是class文件所在的根目录,并且一定不能加斜杠。

小楼夜听雨的博客 1万+

Win10管理员权限的‘暗门’:从mmc.exe被阻止,聊聊UAC与自动提权那些事儿

本文深入解析Windows 10中UAC(用户账户控制)与自动提权机制,探讨mmc.exe被阻止的深层原因及解决方案。从UAC工作原理到自动提权机制,再到具体诊断与修复步骤,帮助用户理解并解决权限管理问题,同时平衡安全性与便利性。

weixin_30521161的博客 420

java 中的路径问题总结(绝对路径与相对路径)

一 相对路径的获得     说明:相对路径(即不写明时候到底相对谁)均可通过以下方式获得(不论是一般的java项目还是web项目)          String relativelyPath=System.getProperty("user.dir");          上述相对路径中,java项目中的文件是相对于项目的根目录          web项目中的文件路径视不同的web服

流浪着的程序员 1362

Shopee商品详情页反爬实战:手把手逆向x-sap-Ri和x-sap-Sec请求头加密

本文详细解析了Shopee商品详情页反爬机制中x-sap-Ri和x-sap-Sec请求头参数的加密逻辑,通过JS逆向技术手把手教你定位加密入口、分析哈希算法与对称加密实现,并提供完整实战案例和应对反爬策略的高级技巧,助力开发者突破电商平台数据采集难点。

weixin_27875131的博客 1830

海康威视工业相机网络配置实战:从MVS软件操作到IP地址规划

本文详细介绍了海康威视工业相机的网络配置实战,从MVS软件操作到IP地址规划。重点讲解了IP设置的重要性、Windows系统下的网络配置步骤、避免IP冲突的技巧,以及MVS软件中的相机IP配置方法。帮助用户快速掌握工业相机的网络连接技术,确保稳定高效的图像采集。

weixin_30296405的博客 486

java 获取tomcat的相对路径_tomcat获取相对路径和绝对路径总结

Java代码Stringpath=Struts2Util.getServletContext().getRealPath("/");Jsp代码Stringpath=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.g...

weixin_31530761的博客 3080

【AI智能体】Hermes Agent 从部署到项目实战操作详解

Hermes Agent 桌面版从安装到实战操作详解

congge 5145

Java项目中的路径问题

在用SpringBoot进行路径调用时一直调用不到这里讲一下。

y_k_j_c的博客 349

数学与纳米技术:微观世界的数学描述

《数学与纳米技术:微观世界的数学描述》 关键词:纳米技术、数学模型、微观世界、物理现象、计算模拟 摘要:本文探讨了数学在纳米技术领域的应用,从数学基础回顾、纳米技术引论,到物理现象与

AI天才研究院 1532

《Autosar_BSW高阶配置》总目录_培训教程持续更新中...

目录 一、Autosar COM Module 二、Autosar BswM Module 三、Autosar EcuM Module 四、Autosar DCM Module 五、Autosar DEM Module 六、其它Module陆续推出 欢迎大家订阅《Autosar_BSW高阶配置》专栏(可以理解为是Autosar培训教程),该专栏每周至少更新一篇,一次订阅,不再二次收费,献上常用的案例和配置方法。下方整理了相关博文的链接(单击蓝色字体即可跳转),方便大家获取。 本专栏...

「汽车电子助手」的博客 4万+

java相对路径保存文件夹_java项目路径 文件路径 相对路径 整理

几种不太安全的:1. new File(path),这个方法的路径到底在那里取决于调用java命令的起始位置定义在哪里,tomcat/bin下面的catalina.bat调用了java,所以在tomcat下相对起始位置是tomcat/bin,但是eclipse启动时,起始位置 是eclipse的项目路径。2.类.class.getClassLoader().getResource("").getP...

weixin_34471637的博客 3849

税务某局 webpack 登录接口逆向分析

我们再回到接口逻辑去看一下,发现每次请求前,还有两个接口,getpublickey和sendsm4,这里分析了一下调用逻辑,sm4这个接口用到一个参数是由publickey返回的一个参数而来,这个参数又经过内部加密处理,我们找到这个参数加密的地方,大概是在这个位置。我们还是顺着逻辑将加载器扣下来,然后用一个变量去接收,有了加载器,我们直接把加密代码扣下来做下处理,把一些用到的参数整理下如下。打上断点分析后,_utils_getuuid这个很长的变量也是加载器的一个函数,我们将这段代码也扣下来,如下。

码王吴彦祖的博客 403

java项目 相对路径_java项目路径 文件路径 相对路径 整理

下面的源码中有不错的解决中文路径的方法:package com.wbtask;import java.io.File;import java.net.URL;public class UrlUtil {/*** 取得当前类所在的文件*@paramclazz*@return*/public static File getClassFile(Class clazz){URL path = clazz....

weixin_32925455的博客 762

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java相对路径的写法格式_java相对路径的写法

正确写法:使用“../img/photo.jpg”的相对路径来定位文件 例2: ...可编辑 Java 文件的路径、绝对路径和规范路径示例说明 java.io.File 提供了三个方法来获取文件的路径不同写法,这三个方法分别是 getPath()、 getAbsolutePath()......总结一下 java 获取路径几种途径- - 在写 java 程序时不可避免要获取文件的路径...总结一下...

weixin_39957068的博客 2949

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java文件路径

getResourceAsStream ()返回的是inputstream getResource()返回:URL Class.getResource("") 返回的是当前Class这个类所在包开始的为置 Class.getResource("/") 返回的是classpath的位置 getClassLoader().getResource("") 返回的是classpath的位置...

JinKin_OldWang的博客 2511

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Java项目里面相对路径是什么

我整理的一些关于【Java】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/bLN8S1Java项目中的相对路径 在Java项目的开发过程中,我们经常需要处理文件操作,比如读取配置文件、加载资源等。在这些操作中,路径的使用显得尤为重要。Java中的路径有绝对路径和相对路径之分...

weixin_34666478的博客 225

Java 中几种获取文件路径的方式

点击上方蓝色“程序猿DD”,选择“设为星标”回复“资源”获取独家整理的学习资料!来源 |公众号「码农小胖哥」1. 前言Java开发中我们经常要获取文件的路径,比如读取配置文件等等。今...

程序猿DD 2025

java路径问题:springboot的前段静态资源路径、java后端读取文件路径、直接访问html

路径问题!路径问题!路径问题! 这个问题坑我两次了,这次必须整理一下。杜绝在此入坑,也祝各位码农们出坑。 不过需要说的地方还挺多的,我尽量精简着说。 来,TMD走起。 大概内容: 1、相对路径和绝对路径 2、springboot项目web中前段静态资源的路径配置 3、静态文件路径配置(包括java后端读取文件路径) 走: 一、相对路径和绝对路径(简单一说) 绝...

CaptainJava的博客 6479

[转载整理]Eclipse写JAVA的相对路径总结

一、工作目录         首先我们要知道,如果在Eclipse项目中直接用类似 new FileReader("1.txt") 这样不带路径直接用文件名访问文件的时候,这个文件必须是在项目的根目录下。也就是说,Eclipse中Java程序的当前工作目录都是在项目根目录(与src平级)下的。         二、bin         但是,我们会发现,很多时候用 new FileRead

菜鸟的专栏 5551

Java获取项目路径下的方法(全)

Java获取项目路径下的方法(全)

一曲破东风的专栏 4177

java查找相对路径文件

我整理的一些关于【Java】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/f2PFnNJava查找相对路径文件的科普文章 在Java编程中,文件操作是经常使用的功能之一。尤其是在处理相对路径时,许多初学者可能会感到困惑。本文将解释什么是相对路径,如何在Java中查找相对路径...

weixin_41219962的博客 172

java根据文件路径指定获取第几级文件夹相对路径

我整理的一些关于【Java】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/bLN8S1如何用Java获取指定级别文件夹的相对路径 在开发过程中,可能会遇到需要根据文件路径获取某个级别的文件夹相对路径的需求。本文将会指导你如何使用Java实现这一功能。我们会分步骤进行,首先了...

weixin_42427882的博客 230
上一篇: 通过动态方法处理多个提交请求
下一篇: hibernate中数组如何对应到数据库中
fancylovejava
博客等级 码龄16年 1052粉丝 184原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值