在Java中读取带有空格的路径 - FileInputStream错误

时间:2014-05-23 11:32:35

标签: java path

我遇到了问题:

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;
     }

2 个答案:

答案 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