java资源文件定位

程序中很多时候需要使用诸如配置文件等类似的资源文件,需要读入这些文件,获取其中的内容并在程序中使用。这就涉及到如何在程序中定位文件的问题。本文介绍java中常用的定位文件的方法。

 

1. 获取文件的URL

 

 

URL url = Main.class.getResource("te st.properties");

 或者

 

URL url = Main.class.getClassLoader().getResource("te st.properties");

 上面两个方法其实是一样的,都是调用ClassLoader的方法。

 

需要注意的是:URL是有编码方案的,通过上面的方法获得的url跟底层的编码方案有关系。注意资源文件名称te st.properties

 

这段代码在tomcat6下运行,得到的url是file:/D:/dev/workspace/AT/WebRoot/WEB-INF/classes/te st.properties

 

但是在tomcat7下运行,得到的url是file:/D:/dev/workspace/AT/WebRoot/WEB-INF/classes/te%20st.properties 空格被替换为%20这个地址不能直接作为File的参数去获得File对象的。

 

可以通过URLDecoder来对URL解码,以便得到我们在java环境下能够正常使用的url字符串。

URLDecoder decoder = new URLDecoder();
String nurl = decoder.decode(url.toString());

 上面的代码使用了被废弃的方法,jdk推荐使用带解码编码方式参数的解码方法,这里由于不清楚我们调用ClassLoader的getResource方法时是怎么给URL编码的(以后再详细了解),所以无奈使用了这个废弃的方法。

 

2. 获得输入流

 

比起获得文件的URL来说,我觉得,获得输入流的方式更加好些,因为这样避免了由于URL编码问题造成的不同环境下运行时的问题。

 

 

InputStream is = Main.class.getResourceAsStream("te st.properties");

 或者

InputStream is2 = Main.class.getClassLoader().getResourceAsStream("te st.properties");
 

这种方式,无论在什么环境下,都能得到此资源文件的输入流。

 

 

 

 

相关推荐

企业微信审批流开发避坑指南:从零搭建自定义审批模板(含完整代码)

本文为企业微信审批流开发提供了从零搭建自定义审批模板的完整指南。通过对比内置模板与自建引擎的优劣,详细阐述了利用企业微信开放API和自建应用实现高度灵活审批流程的方案。文章重点解析了前端JS-SDK安全调用、后端签名生成与回调处理的核心代码,并分享了流程引擎设计、安全加固及性能监控等实战经验,帮助企业开发者避开常见陷阱,构建贴合业务的自定义审批系统。

weixin_28358083的博客 966

java 文件 定位_Java中通过相对路径来定位文件

通常我们定位文件都是通过绝对路径进行定位,比如“F:/Java/bin/test/test.java”,这样的缺点就是,一旦项目文件移动,这些路径就完全失效。所以,下面我们来介绍一种通过相对路径来定位文件的方法。我用的IDE是eclipse,项目路径下有src和bin文件夹分别存放,java的源代码和编译文件。如图,我的工程名是project,在F盘的study目录下,包名是com.www,源文件...

weixin_33917663的博客 993

[Adaptive Autosar]深入理解--Time Synchronization

目录 1.TS典型应用场景 2.CP和AP时间同步对比 3.时间同步基础知识 4.TBR部分参数说明 5. TS功能说明 5.1 基本说明 5.2 时间纠正计算说明 5.3 时间验证 Time Synchronization 时间同步,后面简称TS 1.TS典型应用场景 时间同步,典型应用就是在自动驾驶领域,自动驾驶领域涉及到各个传感器的数据采集,如IMU采集当前车身姿态和运动信息,毫米波雷达-超声波雷达-环视摄像头-前视摄像头...等等传感器捕获的数据,在算法中需要精确知道每个数.

AgingMoon的博客 3997

java实现定位功能_[转贴]JAVA 百度地图SDK地图学习——实现定位功能

之前已经完成了百度地图SDK和百度定位SDK的配置。实现百度定位的功能,最好仔细看看官方的文档,看了好几次才有点明白。我初步想实现如下功能:点击findme按钮,进入新的activity,即在地图上显示我的位置。 首先是完成androidManifest.xml的相关设置package="com.example.TraceMe">android:name="com.example.Tra...

weixin_39704246的博客 2198

【多模态大模型】GLIP:零样本目标检测新范式与视觉语言理解

本文深入解析了多模态大模型GLIP在零样本目标检测和视觉语言理解领域的创新应用。GLIP通过统一目标检测与自然语言理解任务,实现了零样本学习能力,能够精准定位复杂文本描述对应的图像区域。文章详细介绍了GLIP的核心技术、数据策略及实战表现,并对比了与其他多模态模型的差异,为AI视觉理解提供了新范式。

weixin_29186249的博客 263

手把手教你学Simulink--电机电磁兼容与可靠性​场景示例:基于Simulink的电机轴电压与轴电流抑制仿真

本文带你完成了电机轴电压与轴电流抑制的Simulink仿真,实现了:✅ 揭示了共模电压 → 寄生电容 → 轴电压 → 轴承电蚀的完整链路✅ 搭建了含寄生参数的高频电机等效模型共模电压最小化PWM(源头抑制)dv/dt滤波器(路径阻断)轴接地(终端泄放) ✅ 通过仿真验证了轴电压从68 V降至<3 V的显著效果 ✅ 为高可靠性电机系统提供低成本、高效益的轴承保护方案。

MHD0815的博客 315

java 获取文件或资源的路径小结

Java中不存在标准的相对路径,各种相对路径取资源的方式都是基于某种规则转化为绝对路径。所以在Java中文件路径问题无非归结为一点:找基点,也就是在某种环境下(web、j2ee或jar包等)通过合适的方式找到一个稳定的基点,然后通过这个基点找到你要的文件或资源。Java中的基点有哪些呢?大致总结一下有以下几种:(1)classpath 如果你要找的资源在classpath下,那么通过classpa

Code-lover's Learning Notes 688

智元机器人开源具身仿真框架 Genie Sim 入门教程

GenieSim是AgiBot推出的具身智能仿真框架,提供完整闭环开发管道,包括轨迹生成、模型训练和基准测试。框架支持Docker容器化部署,要求Ubuntu 22.04和NVIDIA硬件环境。主要功能涵盖: 支持12种基准测试任务 提供ADER评估框架 集成UniVLA/RDT等基线模型 支持PICO/键盘遥操作 具备轨迹记录回放功能 提供完整API控制接口 开发者可通过Hugging Face获取场景资产,使用标准化ROS主题与仿真环境交互。框架特别优化了碰撞检测和抓取物理模拟,适用于从简单抓取到复杂操

2506_90492529的博客 2540

java定位资源文件路径

工程:GetResourceAsStreamDemo 磁盘路径:E:\hotyeWorkspace\webterminal\GetResourceAsStreamDemo 工程目录如下: 1.利用FIle定位: File txtFile = new File("bin/demo/demo1/1.txt");//这里相当于File txtFile = new File("

Nature_cworkplace的专栏 4238

【深度学习新浪潮】手把手教你不花一分的token钱,纯本地部署openclaw

本地轻量开源AI智能体框架Windows 11 + WSL2 + Ollama + OpenClaw 一键部署零代码配置,直接用上本地模型工具调用未来方向:轻量化、插件化、本地生态成熟如果你喜欢本地AI、厌倦了云端限制、想真正拥有一个“听话又能干”的本地助手,OpenClaw 绝对值得现在就上手玩一玩。

专注:太空算力、AI infra、异构调度、大模型成本工程 2785

ABAP Channels 实战:在 ABAP 7.40 中用 WebSocket 打造实时双向通信

本文详细介绍了SAP ABAP 7.40引入的ABAP Channels通信框架,包含AMC(ABAP Messaging Channels)和APC(ABAP Push Channels)两部分。AMC作为应用服务器内部的消息总线,支持发布/订阅模式,可实现跨会话实时通信;APC基于WebSocket协议,用于浏览器等客户端与ABAP服务器的双向实时交互。文章通过一个乒乓球游戏案例展示了ABAP Channels的实时协作能力,并详细解析了AMC的配置方法、消息发送与接收的代码实现,帮助开发者理解如何利用

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 220

Java国际化资源包定位过程 的详细步骤、原理及代码示例,涵盖资源文件命名、加载逻辑和动态切换场景

Java国际化资源包定位过程 的详细步骤、原理及代码示例,涵盖资源文件命名、加载逻辑和动态切换场景

爱的叹息的专栏 562

全面解读 SAP Business Data Cloud

SAP 在 2025 年初正式推出(简称BDC),它把、以及全新的统一封装为一项完全托管的 SaaS 服务,配套交付“语义层 + 数据产品 + 智能应用”三层能力,为企业构建真正贴近业务语境的 “Business Data Fabric”。这一方案不仅解决了跨系统数据碎片化、治理难及 AI 训练数据可信度低的问题,还为现有 BW 客户、S/4HANA以及第三方工作负载提供云上现代化路径和零拷贝数据共享机制。本文将围绕技术架构、核心组件、业务场景、迁移路线及未来展望展开,以 Henkel 等真实案例佐证。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 906

java 从jar包中读取资源文件

(转载)http://blog.youkuaiyun.com/b_h_l/article/details/7767829  在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题。但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码: Java代码   [java] view plain copy

u010746364的博客 7120

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

eclipse打成jar包后找不到资源文件的解决办法

我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等)。在单独运行的时候这些简单的处理当然不会有问题。但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了。看看下面的代码:Java代码 //源代码1:package edu.hxraid; import java.io.*; publicclass Resource { publi...

weixin_33938733的博客 1861

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java 如何从jar包中读取资源文件

在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题。但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码: Java代码   [java] view plaincopy //源代码1:     package edu.hxraid;     import java

EnjoyCode的专栏 997

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

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

Java 从jar包中读取资源文件

转自: http://www.cnblogs.com/0616--ataozhijia/p/4094952.html 我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等)。在单独运行的时候这些简单的处理当然不会有问题。但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了。看看下面的代码: //源代码1: package edu.hxraid

wwHRestarting的博客 422

JAVA使用ip2region.db进行IP定位遇到资源文件大小改变的问题

2)、继续放在resources下面,但配置需要修改(推荐这种,把所有的配置,资源统一放在resources下,更好维护)发现打包到war包的ip2region.db文件大小进行了改变,原始大小为2661kb,打包后变成了4453kb。使用maven的resources打包资源的时候,且使用资源过滤,会改变bat,db等二进制文件的大小。(1)、资源不放在resources,src下面新建文件夹。发布到服务器,一直解析失败。...

熊浪的博客 978

深入jar包:从jar包中读取资源文件

好文章转载:http://hxraid.iteye.com/blog/483115?page=3#comments 我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等)。在单独运行的时候这些简单的处理当然不会有问题。但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了。看看下面的代码: Java代码   //源代码

gyflyx的专栏 543

【解惑】深入jar包:从jar包中读取资源文件

转自:http://hxraid.iteye.com/blog/483115 我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等)。在单独运行的时候这些简单的处理当然不会有问题。但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了。看看下面的代码: Java代码   //源代码1:   package edu.h

Edison Xu 729

Java加载资源文件的两种方法

Java将配置文件当作一种资源(resource)来处理,并且提供了两个类来读取这些资源,一个是Class类,另一个是ClassLoader类。   当我们自己的程序需要处理配置文件时(xml文件或properties文件),通常会遇到两个问题:   (1)我的配置文件应该放在哪里?   (2)怎么我的配置文件找不到了?   在了解了Java加载资源文件的机制后,以上这两个问题便迎刃而解了

tyust512的专栏 798

【转】深入jar包:从jar包中读取资源文件

全文转载:http://hxraid.iteye.com/blog/483115#bc2351738   作者:Heart.X.Raid      我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等)。在单独运行的时候这些简单的处理当然不会有问题。但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了。看看下面的代码: Java代码 ...

stay here 129
上一篇: eclipse 常用插件
下一篇: RMI入门学习
maimode
博客等级 码龄19年 11粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值