java url 20_URL包里的URL.getpath()对路径中空格识别为%20的处理办法

方法(1),使用repaceAll("%20",' ')替换后,只能解决空格问题。但是路径中包含%和中文就不行了。

方法(2),使用URLDecoder.decode(str,"UTF-8")解码,但是只能解决一部分,若路径中含有+,也是不能解决的,原因是URL并不是完全用  URLEncoder.encode(str,"UTF-8")编码的,+号被解码后,却变成了空格。

方法(3),可以解决所有的问题,用TestURL().class.getResource("").toURI().getPath(),但是需要处理URISyntaxException异常,比较麻烦点。

若路径中带空格,则

1. uri.getpath();返回的路径中的空格仍以“空格”的形式出现,如/F:/MyEclipse Workspace/project/bin/...

除此之外,URL返回的一切路径中的空格都以“%20”的形式出现,uri.toString()也以“%20”的形式出现。

2. new File(String filePath);接受正确URI格式的参数和带“空格”(非20%)的正确相对/绝对字符串路径,否则即使给的路径是正确的也会出现找不到文件的异常。

3. URL/URI返回的路径分隔符都是“/”,File返回的路径分隔符都为“\”。对于存在的文件返回的路径字符串,空格都以"空格"出现,而不存在的路径new出的file,getPath()返回的路径中的空格,仍是new File(String filePath)的参数中原有的形式,即若filePath中是空格的getPath()返回的仍是空格,是“%20”的仍是“%20”。

4.new URL();的参数可以为正确的URI,或者为URI格式的字符串;若字符串是非完整的URI格式,则创建失败。

5.File.toURI()会将file的路径名中的“空格”转化为“%20”,然后在路径前加protocol:"file:/",而File.toURL()只会在file路径前简单的加上protocol:"file:/",而不会将“空格”转化为“%20”,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值