2012-01-19 27 views
7

Tôi đang gặp vấn đề sau khi cố gắng để có được những con đường của một tài nguyên đưa ra:Cách tránh nhận đường dẫn được mã hóa URL từ URL.getFile()?

System.out.println("nf="+new File(".").getAbsolutePath());  
    System.out.println("od="+new File(this.getClass().getResource(".").getFile()); 

Kết quả tôi nhận được là:

nf=C:\Users\current user\workspace\xyz\. 
od=C:\Users\current%20user\workspace\xyz\bin\something 

Vấn đề nằm với điều encoding% 20 URL . Làm thế nào để tránh nó? Có một cách trực tiếp để tránh nhận được loại chuỗi này ở nơi đầu tiên, hoặc tôi nên chỉ chạy chuỗi trả về đối với một số phương pháp sẽ làm giải mã URL?

Cảm ơn

+0

biết chính xác là bạn đang cố gắng để đạt được? – axtavt

Trả lời

12

Điều này là do việc xử lý URL không đúng trong API. Bạn có thể làm việc này bằng cách chuyển đổi chuỗi URL đến một URI đầu tiên:

new URI(this.getClass().getResource(".").toString()).getPath() 

này sẽ tạo ra một chuỗi như sau:

"C:\Users\current user\workspace\xyz\bin\something" 
+0

uri.getPath() trả về null cho tôi. uri.getSchemeSpecificPart() đã làm thủ thuật. –

+0

this.getClass(). GetResource ("."). ToURI(). GetPath() thực hiện công việc –

Các vấn đề liên quan