Java文件路径/服务器路径的获取

news/2025/10/10 15:20:11/文章来源:https://www.cnblogs.com/sunny3158/p/19133117

Java文件路径/服务器路径的获取

大家好,又见面了,我是你们的朋友全栈君。

Java文件路径获取

  • 几种获取方式

getResourceAsStream ()返回的是inputstreamgetResource()返回:URLClass.getResource(“”) 返回的是当前Class这个类所在包开始的为置Class.getResource(“/”) 返回的是classpath的位置getClassLoader().getResource(“”) 返回的是classpath的位置getClassLoader().getResource(“/”) 错误的!!

Class.getResourceAsStream 和 ClassLoader.getResourceAsStream

这两个方法还是略有区别的, 以前一直不加以区分,直到今天发现要写这样的代码的时候运行错误,才把这个问题澄清了一下。基本上,两个都可以用于从classpath里面进行资源读取,classpath包含classpath中的路径和classpath中的jar
两个方法的区别是资源的定义不同,一个主要用于相对与一个object取资源,而另一个用于取相对于classpath的资源,用的是绝对路径
在使用Class.getResourceAsStream 时,资源路径有两种方式,一种以/开头,则这样的路径是指定绝对路径,如果不以/开头,则路径是相对于这个class所在的包的。在使用ClassLoader.getResourceAsStream时,路径直接使用相对于classpath的绝对路径。
举例,下面的三个语句,实际结果是一样的

com.explorers.Test.class.getResourceAsStream(“abc.jpg”)

com.explorers.Test.class.getResourceAsStream(“/com/explorers/abc.jpg”)

ClassLoader.getResourceAsStream(“com/explorers/abc.jpg”)

  • 平时写程序的时候,很多时候提示文件找不到,而抛出了异常,现在整理如下

1、相对路径的获得说明:相对路径(即不写明时候到底相对谁)均可通过以下方式获得(不论是一般的Java项目还是web项目

String relativelyPath=System.getProperty(“user.dir”);

上述相对路径中,java项目中的文件是相对于项目的根目录web项目中的文件路径视不同的web服务器不同而不同(tomcat是相对于tomcat安装目录\bin)

2、类加载目录的获得(即当运行时某一类时获得其装载目录)

1)通用的方法一(不论是一般的java项目还是web项目,先定位到能看到包路径的第一级目录)

InputStream is=TestAction.class.getClassLoader().getResourceAsStream(“test.txt”);

(test.txt文件的路径为项目名\src\test.txt;类TestAction所在包的第一级目录位于src目录下)

上式中将TestAction,test.txt替换成对应成相应的类名和文件名字即可

2)通用方法二 (此方法和1中的方法类似,不同的是此方法必须以’/’开头)

InputStream is=Test1.class.getResourceAsStream(“/test.txt”);

(test.txt文件的路径为项目名\src\test.txt,类Test1所在包的第一级目录位于src目录下)

3、web项目根目录的获得(发布之后)

(1)从servlet出发

可建立一个servlet在其的init方法中写入如下语句

ServletContext s1=this.getServletContext();

String temp=s1.getRealPath(“/”); (关键)

结果形如:D:\工具\Tomcat-6.0\webapps\002_ext\ (002_ext为项目名字)

如果是调用了s1.getRealPath(“”)则输出D:\工具\Tomcat-6.0\webapps\002_ext(少了一个”\”)

(2)从httpServletRequest出发

String cp11111=request.getSession().getServletContext().getRealPath(“/”);结果形如:D:\工具\Tomcat-6.0\webapps\002_ext\

4、classpath的获取(在Eclipse中获得src或者classes目录的路径)

方法一:Thread.currentThread().getContextClassLoader().getResource(“”).getPath()

eg: String t=Thread.currentThread().getContextClassLoader().getResource(“”).getPath();

System.out.println(“t—“+t);

输出:t—/E:/order/002_ext/WebRoot/WEB-INF/classes/

方法二:JdomParse.class.getClassLoader().getResource(“”).getPath() (JdomParse为src某一个包中的类,下同)

eg:String p1=JdomParse.class.getClassLoader().getResource(“”).getPath();

System.out.println(“JdomParse.class.getClassLoader().getResource–“+p1);

输出: JdomParse.class.getClassLoader().getResource–/E:/order/002_ext/WebRoot/WEB-INF/classes/

另外,如果想把文件放在某一包中,则可以通过以下方式获得到文件(先定位到该包的最后一级目录)

eg String p2=JdomParse.class.getResource(“”).getPath();

System.out.println(“JdomParse.class.getResource—“+p2);

输出: JdomParse.class.getResource—/E:/order/002_ext/WebRoot/WEB-INF/classes/jdom/ (JdomParse为src目录下jdom包中的类)

5、属性文件的读取:方法一:

InputStream in = lnew BufferedInputStream( new FileInputStream(name));

Properties p = new Properties();

p.load(in);

注意路径的问题,做执行之后就可以调用p.getProperty(“name”)得到对应属性的值

方法二:

Locale locale = Locale.getDefault();

ResourceBundle localResource = ResourceBundle.getBundle(“test/propertiesTest”, locale);

String value = localResource.getString(“test”);

System.out.println(“ResourceBundle: ” + value);

工程src目录下propertiesTest.properties(名字后缀必须为properties)文件内容如下:

test=hello word

public class FileTest { public static void main(String[] args) { System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));System.out.println(FileTest.class.getClassLoader().getResource(""));System.out.println(ClassLoader.getSystemResource(""));System.out.println(FileTest.class.getResource(""));System.out.println(FileTest.class.getResource("/")); // Class文件所在路径System.out.println(new File("/").getAbsolutePath());System.out.println(System.getProperty("user.dir"));}}

输出结果:file:/E:/workspace/JavaStudy/bin/ file:/E:/workspace/JavaStudy/bin/ file:/E:/workspace/JavaStudy/bin/ file:/E:/workspace/JavaStudy/bin/test/ file:/E:/workspace/JavaStudy/bin/ E:\ E:\workspace\JavaStudy

参考地址:http://blog.csdn.net/ak913/article/details/7399056

  • Java获取服务器路径
    1. String contextPath = request.getContextPath();
    2. String realPath = request.getSession().
    3. getServletContext().getRealPath(“/”);
    4. String basePath = request.getScheme()+“://”+request.getServerName()+“:”+
    5. request.getServerPort()+contextPath+“/”;

说明

contextPath =”/项目名称”; //获取的是项目的相对路径

realPath = F:\tomcat_home\webapps\项目名称\ //获取的是项目的绝对路径(Tomcat服务器中项目所在目录)

basePath = http://localhost:8080/项目名称/ //获取的是服务的访问地址(浏览器中访问地址)

String serviceRoot = request.getScheme()+“://”+request.getServerName()+“:”

+request.getServerPort()+request.getContextPath()+“/”;

参考地址:http://blog.csdn.net/clyao_123456/article/details/51098479

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/157583.html原文链接:https://javaforall.cn


原文链接:https://cloud.tencent.com/developer/article/2106028

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/934177.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

某中心在旧金山设立AGI实验室专注长期AI研究

某中心在旧金山成立全新AGI实验室,专注于开发能够在数字和物理世界执行任务的人工智能代理。实验室将结合大语言模型与强化学习技术,致力于实现能够从人类反馈中学习、自我修正并推断目标的实用AI系统。某中心在旧金…

Appcrawler自动遍历工具-智能遍历测试与测试用例生成

效率与成本的抉择 在软件开发过程中,测试环节直接影响产品质量和用户体验。随着系统迭代频繁、功能复杂化,企业在测试方法的选择上面临困境:手工测试灵活却效率低,自动化测试高效却前期投入大。那么,我们到底应该…

[USACO20FEB] Clock Tree S

一开始读错题意了。 然后以为自己做法假了,实际并没有。 有 \(O(n)\) 做法但我写的是 \(O(n^2)\) 的。 换根dp就行了,每次判断一下能不能成功。 注意如果到最后根是 \(1\) 也是可以成功的。点击查看代码 #include<…

完整教程:【Spark+Hive+hadoop】人类健康生活方式数据分析

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

mysql查看表大小,4种实用方法

MySQL数据库运维中,掌握表的大小信息对于性能优化、容量规划和维护工作至关重要。本文将详细介绍4种查看MySQL表大小的实用方法,帮助你精准掌握数据库存储状况。 方法1:查看单个表的完整大小信息 使用以下SQL可以查…

微算法科技(NASDAQ:MLGO)开发延迟和隐私感知卷积神经网络分布式推理,助力可靠人工智能系统技术

随着人工智能(AI)技术的不断发展,智能服务的广泛应用正在深刻改变着各行各业的面貌。在这个过程中,基于深度学习的系统往往面临计算资源的巨大需求,尤其是在边缘设备上运行复杂的卷积神经网络(CNN)时,计算负载…

不止节能,更能 “生钱”:MyEMS 辅助企业参与电力现货市场的实操案例

随着我国电力市场化改革的不断深化,电力现货市场从试点逐步走向常态化运行。对于用电大户企业而言,这既是机遇 —— 可通过灵活调整用电策略享受电价波动红利,也是挑战 —— 传统用电模式难以应对复杂的电价机制,往…

当能耗监控变 “游戏”:MyEMS 可视化看板如何让员工主动参与节能?

在企业节能管理中,“员工被动接受监控” 是长期存在的痛点 —— 传统能耗数据报表枯燥难懂,员工既不清楚自己的行为与能耗的关联,也缺乏主动节能的动力。而 MyEMS(My Energy Management System)可视化看板的出现,…

微算法科技(NASDAQ:MLGO)基于任务迁移的弹性框架重塑动态扩缩容,赋能边缘智能计算

在全球数字化进程加速的今天,边缘计算(Edge Computing,简称EC)作为推动移动互联网、物联网和智能终端普及的关键技术,正被赋予越来越多的期待。随着用户对于实时性、可靠性以及高性能数据处理需求的不断提升,传统…

从小时级到分钟级:多点DMALL如何用Apache SeaTunnel把数据集成成本砍到1/3?

过去我们依赖 Spark 自研同步工具,虽然稳定,却面临“启动慢、资源重、扩展难”的痛点。作者 | 贾敏 多点DMALL 资深大数据研发工程师 作者介绍 贾敏,多点 DMALL 资深大数据研发工程师,主导公司核心数据集成平台架构…

2025 最新隔音棉生产厂家口碑推荐榜:甄选实力与品质兼具的品牌,含西南 / 昆明高性价比厂商最新推荐防火墙/内衬/鸡蛋/聚酯纤维/装修/吊顶隔音棉厂家推荐

随着建筑装饰、汽车改装等领域对声学环境要求的升级,隔音棉市场需求持续扩大,但行业乱象让采购者面临多重挑战。部分厂商为压低成本选用劣质基材,导致产品隔音量不足、防火环保不达标,潮湿环境下易发霉老化;新品牌…

2025 年高强钢板厂家最新推荐排行榜:聚焦国内优质企业,涵盖多型号产品,助力工业采购精准选型Q550D/合金/HG785D/ Q690D/S960QL/700L高强钢板厂家推荐

当前,高强钢板作为工业生产的关键基础材料,在矿山、冶金、电力、汽车制造等领域的应用愈发广泛,下游行业对其耐磨、耐蚀、高强度等性能的要求也不断提高。然而,市场上高强钢板供应商资质参差不齐,部分产品存在耐磨…

2025 升降杆厂家TOP 榜:梁山信达恒泰,专注多领域设备供应,气动型升降杆源头厂家推荐!

随着智慧城市建设、安防监控升级及市政基础设施完善,升降杆作为支撑通讯设备、监控摄像头、照明系统的核心载体,市场需求持续增长。但行业现存诸多痛点:部分厂家使用薄壁钢材、劣质焊接工艺压缩成本,导致升降杆抗风…

2025 年最新推荐耐磨钢板生产厂家排行榜:涵盖高锰 / 堆焊 / 双金属 / NM 系列及无磁类型,解决采购难题助力企业选高性价比品牌

在矿山、冶金、电力等重工业及轻工业领域,耐磨钢板作为核心耗材,其质量与性能直接关联设备运行效率、维护成本及企业生产稳定性。当前市场中,耐磨钢板厂家数量繁杂,产品规格多样、价格跨度大,且部分厂家存在压缩成…

Playwright MCP 与 Claude 的完美协作:打造网页操作智能体

当最智能的大脑遇见最灵活的手 想象一下,您可以用自然语言对AI说:“请帮我找到最近三个月内关于AI代理的最新研究论文,下载PDF并整理成一个摘要表格”,然后它就能自动打开浏览器,导航到学术网站,执行搜索、筛选、…

高纯气体管道工程安装公司厂家推荐/管道施工队哪家好?

高纯气体管道工程安装公司厂家推荐/管道施工队哪家好? 南京联俊流体技术有限公司是高纯气体管道工程安装领域的优质选择,其核心优势体现在专业资质、技术实力、服务体系及行业口碑四大方面,具体分析如下: 一、专业…

苹果群控系统的游戏运营 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

找ant组件库对应样式

我的项目里面定义这个样式是.ant-tag { background-color: #F2F3F5; color: #1D2129; border-color: #F2F3F5;},我想在Ant Design Vue 的github找到对应的地方看看样式一不一样,我该怎么找,而且这个样式是以什么…

完整教程:云原生网关Higress介绍与部署指南

完整教程:云原生网关Higress介绍与部署指南2025-10-10 14:35 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: bl…

达芬奇中文入门到精通视频教程DaVinci Resolve常用快捷键

达芬奇是一款专业的影视后期制作软件,它可以帮助影视制作人员进行视频调色、视觉特效、音频编辑和剪辑等方面的处理。达芬奇18 破解版是迄今最先进的调色工具。DaVinci Resolve Studio破解版和专业多轨道剪辑功能合而…