getResource().getPath()返回路径带%20问题

在Java项目中遇到getResource().getPath()返回的路径含有%20导致系统找不到指定路径的问题。经分析,%20可能代表空格,由URL编码引起。解决方案包括替换%20、使用URLDecoder.decode或通过toURI().getPath()方法,其中推荐使用toURI().getPath(),尽管需要处理URISyntaxException异常。
摘要由CSDN通过智能技术生成

问题描述

最近在品优购项目中开发图片上传服务时,调试过程中毫无问题,但是一旦发布到项目中使用,就崩溃掉,崩溃提示信息:

java.io.FileNotFoundException: D:\Java%20Project\pingyougou-parent\pinyougou-manager-web\target\classes\config\fdfs_client.conf (系统找不到指定的路径。)

由此我们可以看出一些眉目:提示中的路径中出现了一个%20,对比我们的实际路径

image-20200729192146357

发现这个%20可能代表空格,但是系统找路径时并不能自动转化。

对此我们有了思路,应该是每一个地方转化时出错了,我们按照程序一步步深入展开。

我们发现FastDFS文件服务器时需要读取配置文件的路径,采用了this.getClass().getResource(“/”).getPath()的方法来取得存放 class 的物理路径。

image-20200729192552264

经过查阅资料发现:TestURL().class.getResource("").getPath()或TestURL().class.getResource("").getFile()获得的路径,不能被FileReader()和FileWriter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值