绝对路径被视为相对路径

时间:2015-08-13 01:42:42

标签: java windows-10 netbeans-8

我遇到了一些代码,其中绝对路径被视为相对路径。 到目前为止,我一直无法在其他项目中重现这一点。

我在Windows 10上使用带有JDK 8u51的NetBeans 8.0.2。

以下是代码:

public void setImagePath(String path) throws IOException {
    File file = new File(path);
    System.out.printf("path:     %s\n", path);
    System.out.printf("resolved: %s\n", file.getAbsolutePath());
    System.out.printf("test:     %s\n", new java.io.File("C:/users/rando/desktop/test.jpg").getAbsolutePath());
    img = ImageIO.read(file);
    reloadImage();
}

这是输出:

path:     ‪C:\users\rando\desktop\test.jpg
resolved: C:\Users\rando\Dropbox\Other\NetBeans Projects\Applications\test\‪C:\users\rando\desktop\test.jpg
test:     C:\users\rando\desktop\test.jpg

请注意,在“已解决”行的中途,它以C:...

开始绝对路径

任何人都可以对此有所了解吗?

我唯一的猜测是这是一个Windows 10问题。

编辑:

因此,在某种程度上,这是一个Windows 10问题。在Windows 7上,我总是通过转到其属性并从安全选项卡复制对象名称来获取特定文件的完整路径。在Windows 10中,它显然现在有一个额外的控制字符。

1 个答案:

答案 0 :(得分:2)

您的路径字符串中似乎有一个Unicode LRE控制代码。最简单的解决方法是

path = path.replaceAll("\\p{C}", "");

将删除所有控制字符。