URLEncoder.encode转码时的空格问题,判断网络文件是否存在

URLEncoder.encode在对字符串进行转码时,会将空格转为”+“号,URLDecoder.decode方法再解码时会将加号"+"和"%20"都解码为空格。

表面上看起来没有什么问题,但是遇到上传文件时候,对于带有空格的文件,将文件名称URLEncoder.encode之后,拼接成完整的文件地址进行访问时,会提示文件不存在。

最好的处理方式是URLEncoder.encode在编码之后,调用replaceAll("\\+", "%20"),将所有的加号替换成%20。

String filename = "你好 nihao.pdf";
String encodefilename = java.net.URLEncoder.encode(filename).replaceAll("\\+", "%20");

这样转码之后就不会有问题了。

另附上判断网络文件是否存在的两个方法:

1.使用getInputStream()

boolean isExist = false;
try{
	URL url = new URL(urlStr);// 注:urlStr中需将空格替换为%20,否则报505
	URLConnection conn = url.openConnection();
	conn.getInputStream();
	isExist  = true;
}catch(Exception e){
	// 获取失败
	isExist = false;
}

2.使用getResponseCode()

boolean isExist = false;
try{
	URL url = new URL(urlStr);// 注:urlStr中需将空格替换为%20,否则报505
	HttpURLConnection conn = (HttpURLConnection)url.openConnection();
	int state = conn.getResponseCode();
    if(state == 200){
	    isExist  = true;
    }else{
	    isExist  = false
    }
}catch(Exception e){
	isExist = false;
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值