java.lang.IllegalArgumentException:Illegal character in path at index 2:???,??=
时间: 2023-11-21 10:57:24 浏览: 127
这个错误是因为在创建URI的时候,路径中包含了非法字符,导致无法创建URI。具体来说,这个错误信息中的“index 2”指的是路径中第二个字符,即“???”中的第一个问号。要解决这个问题,可以使用如下代码对路径进行处理:
```java
public String checkPath(String path){
try {
//如果URI能够正常被创建,则返回这个路径
return new URI(path).getPath();
}catch (URISyntaxException e){
//如果捕捉到创建URI的异常,则根据异常信息删掉这个非法字符
StringBuilder builder = new StringBuilder(path);
//删除非法字符
return checkPath(builder.deleteCharAt(e.getIndex()).toString());
}
}
```
这个方法会递归地删除路径中的非法字符,直到路径可以被正常创建为止。但是这个方法还有缺陷,就是当文件名中含有“?#/”这些特殊含义的字符时,URI的getPath()方法是无法返回正确路径的,因此还需要在调用上述方法之前,需提前一步处理文件名。具体来说,可以使用如下代码对文件名进行处理:
```java
public String getPath(String dirPath, String fileName){
//剔除特殊含义的字符"?#/"
fileName = fileName.replaceAll("[?|#/]", "");
//返回路径
return dirPath + fileName;
}
```
这个方法会将文件名中的“?#/”这些特殊含义的字符全部剔除,然后将剩余的文件名和目录路径拼接起来,返回完整的路径。
阅读全文