Я работаю в системе Windows XP с JRE 1.6.
Я делаю это :
public static void main(String[] args) {
try {
System.out.println(new File("C:\\test a.xml").toURI().toURL());
} catch (Exception e) {
e.printStackTrace();
}
}
и я получаю это: file:/C:/test%20a.xml
Почему в данном URL-адресе нет двух косых черт перед C:
? Я ожидал file://C:...
. Это нормальное поведение?
ИЗМЕНИТЬ:
Из исходного кода Java: java.net.URLStreamHandler.toExternalForm(URL)
result.append(":");
if (u.getAuthority() != null && u.getAuthority().length() > 0) {
result.append("//");
result.append(u.getAuthority());
}
Кажется, что часть авторитета URL-адреса файла имеет значение null или пуста, и поэтому двойная косая черта пропускается. Так что же такое авторитетная часть URL-адреса и действительно ли она отсутствует в файловом протоколе?
{
s... - person Zifre   schedule 15.07.2009file://C:...
— это «расслабление» Windows: правильно должно бытьfile:///C:...
. См. superuser.com/questions/352133. - person Stuart Rossiter   schedule 07.11.2014