Я столкнулся с фрагментом кода, где абсолютный путь рассматривается как относительный. Пока мне не удалось воспроизвести это в других проектах.
Я использую NetBeans 8.0.2 с JDK 8u51 в Windows 10.
Вот кусок кода:
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 он, по-видимому, теперь имеет дополнительный управляющий символ.
path
с косой чертой вместо обратной, т.е."C:/users/rando/desktop/test.jpg"
? - person Sergey Kalinichenko   schedule 13.08.2015\
вызывает ошибку компилятора, если он используется в строковом литерале, и если я ввожу его с помощью консоли, я получаю правильный вывод. - person Tom   schedule 13.08.2015path
. У меня такое ощущение, что в нем может быть знак порядка байтов или другие управляющие символы. - person VGR   schedule 13.08.2015path: C:\users\rando\desktop\test.jpg path len: 32 resolved: C:\Users\rando\Dropbox\Other\NetBeans Projects\Applications\test\C:\users\rando\desktop\test.jpg resolved len: 100 test: C:\users\rando\desktop\test.jpg test len: 31
- person Travis Bruce   schedule 13.08.2015System.out.printf("%04x%n", path.codePointAt(0));
? - person VGR   schedule 13.08.2015202a
- person Travis Bruce   schedule 13.08.2015path = path.replaceAll("\\p{C}", "");
. - person VGR   schedule 13.08.2015