Hệ thống tôi đang chạy là Windows XP, với JRE 1.6.Java: File.toURI(). ToURL() trên tệp Windows
Tôi làm điều này:
public static void main(String[] args) {
try {
System.out.println(new File("C:\\test a.xml").toURI().toURL());
} catch (Exception e) {
e.printStackTrace();
}
}
và tôi có được điều này: file:/C:/test%20a.xml
Tại sao các URL đã cho không có hai dấu gạch chéo trước C:
? Tôi mong đợi file://C:...
. Đó là hành vi bình thường?
EDIT:
Từ mã nguồn Java: java.net.URLStreamHandler.toExternalForm (URL)
result.append(":");
if (u.getAuthority() != null && u.getAuthority().length() > 0) {
result.append("//");
result.append(u.getAuthority());
}
Dường như phần Authority của một URL tập tin là null hoặc trống rỗng, và do đó dấu gạch chéo kép bị bỏ qua. Vậy phần thẩm quyền của URL là gì và nó có thực sự vắng mặt trong giao thức tệp không?
Tôi thực sự hy vọng rằng bạn đặt dấu cách trước '{' s ... – Zifre
Bạn đang chạy phiên bản Windows nào? Trên thực tế không quan trọng nếu bạn có thể phân tích cú pháp ngược lại bằng URL mới (Chuỗi). – akarnokd
@ kd304: cũng quan trọng nếu tôi phân tích cú pháp kết quả bằng một thứ khác với URL (Chuỗi), mà tôi làm. – glmxndr