我遇到了问题:
java.net.URISyntaxException:索引49处路径中的非法字符:file:/// opt / storage / user-data / attachments / 1_00100 \ 0042.jpg
文件的原始名称是1_00100 0042.jpg
你能给我一些解决方案如何使用这个错误路径获取此文件吗?我知道C#有Path类。 Java中有类似的内容吗?
我尝试了下一步但没有成功:
private String replaceWhitespace(String str) {
if (str.contains(" ")) {
str = str.replace(" ", "%20");
}
return str;
}
答案 0 :(得分:3)
使用文件,它适用于空格:
String path = "file:///opt/storage/user-data/attachments/1_00100\\ 0042.jpg";
File f = new File(path);
如果要用%20替换空格,请使用正则表达式:
path.replaceAll("\\u0020", "%20");
答案 1 :(得分:1)
我不确定你在哪里获得此路径,但我认为在添加空格之前\
是为了逃避它,因此您需要更改方法以在空格之前删除此\
。 />
此外,由于此方法不会影响您班级实例的状态,因此您可以将其设为static
。
private static String replaceWhitespace(String str) {
if (str.contains("\\ ")) {
str = str.replace("\\ ", "%20");
}
return str;
}
演示:
String file = "file:///opt/storage/user-data/attachments/1_00100\\ 0042.jpg";
file = replaceWhitespace(file);
URI u = new URI(file);
System.out.println(u.getRawPath());
System.out.println(u.getPath());
输出:
/opt/storage/user-data/attachments/1_00100%200042.jpg
/opt/storage/user-data/attachments/1_00100 0042.jpg