2010-09-02 281 views
10

是否有任何簡單的方法將包含雙字節字符的URL轉換爲絕對路徑?將URL轉換爲絕對路徑

我想問的原因是我想找到的資源是這樣的:

URL url=getClass().getResources("/getresources/test.txt"); 
String path=url.toString(); 
File f=new File(path); 

程序無法找到該文件。我知道路徑包含所有可以轉換的空間的'%20',但是我真正的問題是我使用的是日文操作系統,當程序jar文件位於帶有日文文本的目錄中時(例如,我得到URL-encoding目錄名稱, 這樣的:

%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97

我想我可以得到UTF-8字節代碼並將其轉換爲適當的字符來查找文件,但我想知道是否有更簡單的方法來執行此操作。任何幫助將不勝感激。

新臺幣

+0

這是不是 「垃圾」。這些是字符的逃逸表示。他們是合法的價值。您的代碼片段不起作用的原因是因爲Class.getResources和File具有不同的根空間。 – 2010-09-02 22:15:19

+0

有沒有我可以用來將路徑轉換爲正常可讀字符的類? – nite 2010-09-02 22:58:46

回答

24
URL url=getClass().getResource("/getresources/test.txt"); 
File f=new File(url.toURI()); 
+0

thx,正如我在下面說的,這隻適用於netbeans。當我編譯應用程序時遇到錯誤。 – nite 2010-09-02 22:57:30

+0

莫里茨明白了。 File對象不能使用URL來歸檔資源。你必須流式傳輸它。 – 2010-09-03 15:58:05

+2

得到一個異常「URI不分層」 – Igal 2016-02-01 07:45:19

3

File有一個構造函數取java.net.URI類型的參數這種情況:

File f = new File(url.toURI()); 
+0

我試過了。當我在Netbeans中運行該程序時,它可以正常工作,但是當它生成時不起作用。 – nite 2010-09-02 22:54:45

+4

我得到的錯誤是: java.lang.IllegalArgumentException:URI不是分層的 – nite 2010-09-02 22:56:52

+1

難道你是在用'.jar'文件中的資源捆綁你的應用程序嗎?您不能從該URI中創建一個File對象,然後由於該資源不是文件而是該.jar文件中的條目。 – Moritz 2010-09-02 23:17:03

相關問題