一个通用的动态获取文件路径的方法

1、【问题】

 

在之前的通用查询框架中使用的读取XML配置文件中有一个动态获取文件的方法:

 

 public String getConfFile(String file) {
  URL confURL = getClass().getClassLoader().getResource(file);
  if (confURL == null)
   confURL = getClass().getClassLoader().getResource(
     "META-INF/" + file);
  if (confURL == null)
   confURL = Thread.currentThread().getContextClassLoader()
     .getResource(file);
  if (confURL == null) {
   System.err.println(" cann't find config file:-->" + file);
  } else {
   String filePath = confURL.getFile();
   File file1 = new File(filePath);
   if (file1.isFile())
      return filePath;
  }
  return null;
 }

 

 

 

可是该方法在JDK 1.4.X下运行有问题,无法正常获取路径!

但是在JDK1.5中运行无误!

 

 

2、【分析】

 

经过跟踪发现,在1.4.X下,confURL.getFile()获取的路径如下:

 

/D:/Tomcat%205.0.28/webapps/piccdcms/WEB-INF/classes/config/Module.xml

 

很明显这里的问题在于:Tomcat%205.0.28!!

 

而在JDK 1.5里面是正常的显示:

/D:/Tomcat 5.0.28/webapps/piccdcms/WEB-INF/classes/config/Module.xml

 

 

3、【解决方案】

 

   String filePath = confURL.getFile();
   File file1 = new File(filePath);
   if (file1.isFile())
      return filePath;

 

 

===========》

 

 

   String filePath = confURL.getFile();
   filePath = filePath.replaceAll("%20", " ");
   File file1 = new File(filePath);
   if (file1.isFile())
    return filePath;

 

   修改之后,该方法就可以在JDK1.4中正常使用了!

 

 

4、【总结】

 

对于JDK1.5中的URL.getFile(),能自动把unicode编码(%20)转换过来。而在1.4.X中还不行,必须人为进行转换。

 

.NET Core 文件路径解决方法,统一Linux Window .NET Core 文件路径解决方法,统一Linux Window.NET Core 文件路径解决方法,统一Linux Window1 场景2 平台文件路径处理方式3 解决方案上传解压ZipFile解压ZipFile源码修改修改方案 .NET Core 文件路径解决方法,统一Linux Window 在不同平台下面,这里特指Linux、Window,一般我们开发机在window下面,而生产环境在linux平台下,而两个平台处理文件路径不同,稍不注意就会掉坑中。 1 场景 1.1. 上传文件 2.2. 压缩包 阅读详情

相关推荐

Unity选择文件或者文件路径的方法

一、引用对应的库文件:https://download.youkuaiyun.com/download/xiaochenxihua/10952819 二、编写对应的控制脚本 /*** * Title:"智慧工厂" 项目 * 主题:打开文件 * Description: * 功能:XXX * Date:2019 * Version:0.1版本 * Author:Coffee * Modify Reco...

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 7242

2021-11-01动态文件路径

package com.cdkj.common.utils; import com.cdkj.framework.config.MinioConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import .

飞腾创客 276

java类动态获取相对路径

java类动态获取相对路径,能够动态获取文件所在盘符及路径!!

SpringBoot动态获取上传文件地址和附件上传

1 yml文件配置 com:   js:     localFilePath:       D://jsStatic     staticFile:       /static 2 上传地址获取 /**      * 根据yml文件的配置,获取图片的存储路径      */     @Value("${com.js.localFilePath}")     String saveurl;  ...

zzqtty的博客 3117

AI 模型训练核心方法论:零基础也能落地的 8 个关键阶段

本文是为 AI 零基础学习者打造的模型训练入门指南,以生活化语言拆解核心概念,规避专业术语壁垒。内容先通俗阐释模型训练、监督学习、数据集划分等基础概念,再按问题定义、数据准备、模型选择、环境搭建、训练、评估、调参、部署 8 个阶段,拆解完整训练流程,搭配 PyTorch 代码示例与实战案例,同时提供资源预算、常见问题解决方案及学习路径。指南强调数据的核心重要性,推荐新手优先使用迁移学习和免费 GPU 资源,兼顾理论与实操,帮助学习者快速上手,避开训练误区,独立完成从模型搭建到部署的全流程。

weixin_52741870的博客 469

微生物16S数据上传NCBI的SRA库

本篇内容仅包括:俺自己的实验收集了淡水、淡水沉积物、海水、海草附着微生物样品,测序所得的Fastq格式数据,在文章投稿发表时被要求数据需上传NCBI的SRA库,得到一个PRJNA2347899这样子的IDs。仅解决了这个上传过程!

Xf_Niu的博客 7435

jsp页面路径获取:动态获取

jsp页面引用资源路径获取的详解

SHENG_Z的博客 1129

Cadence PSpice 仿真0:绘制电路图方法图文教程

在使用PSpice进行电路的仿真时,首先需要使用带有PSpice模型的元器件来绘制电路图,本文简单介绍进行电路图绘制是常用的几种需要掌握的方法,以满足PSpice仿真绘制简单电路图所用。

fydar的博客 4703

动态获取文件路径或图片路径

我也不详细说了,直接上代码public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button back; private ImageView biment; private String picPath = null; private

2586

[QMT量化交易小白入门]-十二、QMT回测龙头打首板和连板的策略

class a():passA = a() #创建空的类的实例 用来保存委托状态field_list定义了需要的市场数据字段,而类a用于保存交易状态。

木头大左的博客 4759

[yolov5/yolov8修改]替换yolov5/yolov8中的主干网络为EfficientNetv2

针对yolov5和yolov8的主干网络进行替换。

PLH19990227的博客 4147

TCL脚本中动态获取文件路径的四种核心方法解析

本文详细解析了TCL脚本中动态获取文件路径的四种核心方法,包括使用info命令、file normalize、file dirname等技巧,帮助开发者解决跨平台路径处理问题,提升脚本的可移植性和执行效率。特别适合EDA工具开发和自动化测试框架搭建场景。

weixin_42569329的博客 438

Aurix TC3xx系列MCU DMA模块配置方法(二)

本文主要基于英飞凌Aurix TC3xx系列MCU,通过EB tresos配置工具,介绍DMA驱动模块的配置方法。

m0_38045338的博客 2850

js已知文件路径,通用获取文件名、后缀、类型

已知文件路径,通用获取文件名、后缀、类型 一、实际效果图 二、前端代码参考 JS模板 // 选择文件后返回 { resultData: '/storage/emulated/0/DCIM/Camera/IMG_20170703_133717.jpg' } var path ='/storage/emulated/0/DCIM/Camera/IMG...

xymxwz的博客 1万+

uniapp [安卓苹果App端] - errMsg“: “request:fail abort statusCode:-1 不支持的URL(-1002)Uniapp真机运行APP网络请求报错失败排查

uniapp真机运行APP,网络请求报错errMsg“: “request:fail abort statusCode:-1 不支持的URL(-1002),uni.request网路请求报错,uniApp解决请求接口报错,uniapp app端打包上线后请求报错,真机运行测试请求失败,uniapp安卓app请求报错,uniapp苹果ios平台网络请求报错,uniapp真机预览请求失败怎么办,不是跨域问题,在H5中请求可以正常发送和接收,但在真机APP上请求报错,Hbuilder真机运行app网络请求报错,全

🏆 前端领域优质创作者 3087

I2C通信——时序图

本文用逻辑分析仪抓取主机I2C通信的时序图,抓取的过程是读某个寄存器的值。

weixin_43772611的博客 7355

使用classloader动态获取src下的文件路径

前情提要:在学习JDBC部分知识时,为了解决数据库操作代码冗余问题,抽取冗余代码创建JDBC工具类 JDBC工具类主要包含获取数据库连接对象和导入jar包以及释放资源部分操作,将这些操作封装为相应的静态方法,在编写获取数据库连接对象的静态方法时,为了解决将代码写死的问题,我们采取静态代码块读取配置文件中的数据库信息,创建相应的数据库连接对象。 //成员变量是静态的,便于被静态方法和静态代码块所访问 private static String u...

weixin_51208857的博客 1485

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

文件路径通用的一种写法

文件路径通用的一种写法: 思考一下这样写代码有什么问题? FileReader fr = new FileReader(“IOtest\reflecttest01.properties”); 这种方式的路径缺点是:移植性差,在IDEA中默认的当前路径是project的根。 这个代码假设离开了IDEA,换到了其他位置,可能当前路径就不是project的根了。此时路径就没有效果了。所以我们以后不会这样写路径。 接下来说一种比较通用的一种路径方式。即使代码换位置了,也能找得到路径。 注意:使用这种通用的方式的前

pipizhen_的博客 1284

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

JMeter参数化时CSV动态获取文件路径

参考如下。

weixin_45058736的博客 254

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

动态获取src目录下文件路径及原理

使用类加载器获取src目录下文件路径 ClassLoader classLoader = 类名.class.getClassLoader(); URL url = classLoader.getResource("文件名"); String path=url.getPath();

望江盼船的博客 1378

VMware Workstation——虚拟机更换磁盘文件路径的方法总结

电脑用久了,文件越来越多,磁盘空间就变得紧张起来,原来的新建的Linux虚拟机磁盘文件是放在D盘下,最近加了块固态硬盘,想把Linux虚拟机磁盘文件改动新的磁盘下,节省下原来D盘的空间,这里总结下虚拟机更换磁盘文件路径的方法。

数字世界 万物互联 1万+

TCL脚本中动态获取文件路径的实用技巧与实例解析

本文深入解析了TCL脚本中动态获取文件路径的核心技巧,重点介绍了如何使用`info script`命令结合`file normalize`和`file dirname`命令,构建健壮且位置无关的脚本。通过实用案例,详细说明了如何解决模块化脚本引用、EDA工具环境路径处理等常见问题,确保脚本在任何工作目录下都能准确定位自身及依赖资源。

s4t5u6v的博客 687

Linux 敏感文件路径总结以及查找方法

在渗透测试中,了解系统关键文件的路径及其作用是十分必要的。在后渗透阶段,掌握这些路径能够帮助安全测试人员更高效地收集信息并发现潜在的安全漏洞。以下是常见服务文件路径、系统敏感文件路径以及查找方法的总结。Linux 系统中存在一些重要的敏感文件,它们存储了用户信息、系统配置和历史记录等内容。通过了解和掌握这些敏感文件路径及查找方法,可以在渗透测试中更加高效地发现系统的薄弱点,为进一步的渗透打下基础。在后渗透测试阶段,查找机密文件是收集信息的重要步骤。这是一种有效的方法,用于查找潜在的机密内容。

vortex5的博客 1856

js动态获取文件路径

function getRootPath(url) {     //获取当前网址     var curWwwPath = window.document.location.href;     var pos = curWwwPath.indexOf(url);     var localhostPath = curWwwPath.substring(0, pos);----sub

起风了 1441

DELPHI得到文件路径的方法

<br />DELPHI得到文件路径的方法 <br />方法一:只能到文件夹<br />uses FileCtrl;{记得要先引用这个}<br />var<br />  Dir: string;<br />begin<br />  SelectDirectory('选择你要 XXOO 的目录', '', Dir);<br />  ShowMessage('你选择了这个目录来 XXOO '+ Dir);<br />end;<br /><br />方法二:<br />用opendialog,和savedialo

sumstars的专栏 2691
上一篇: 《compass-reference》翻译计划之6.3 检索类映射(一)
下一篇: 使用ExtJS2构造动态异步加载的树
穿过午夜
博客等级 码龄19年 16粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值