2010-10-05 59 views
-1

我正在使用我的Java應用程序中的文件(讀取,寫入和複製),java.io.Filecommons-io非常適合這類任務。使用帶錨的文件,哪些選項適用於Java?

現在,我可以鏈接到HTML中這樣說:

Z:\an absolute\path\to\a\file.html 

但是,我需要爲錨的支持太:

Z:\an absolute\path\to\a\file.html#anchor 

保持,通過使用Java得到了系統獨立.io.File。所以,我需要提取路徑和錨點,我想知道它是否會像尋找一個尖銳的事件一樣容易。

回答

1

java.io.File包含一個接受URI的構造函數,它可以表示各種資源,包括URL和本地文件(請參閱rfc)。 URI也符合您支持錨點的要求,並提取路徑信息(通過instance.getPath())。

+0

當試圖從java.io.File中轉換爲java.net.URI中的使用java.io .File.toURI()方法將銳利(#)字符轉義。最終用戶不關心URI,他們關心使用他們始終知道的Windows路徑。在我的情況下,這不是解決方案,除非有更直接的方式來解決這個問題。 – Alexander 2010-10-06 08:25:12

+1

我可能一直不清楚。我建議您重構您的代碼以使用URI的所有資源,並根據需要進行轉換,具體取決於您需要執行的操作。這樣用戶可以處理本地路徑或URL,您只需創建適合執行io的對象即可。如果你的代碼不能簡單地做到這一點,那麼我看到你的困境。 – 2010-10-06 15:42:19

0
File f = new File("Z:\\path\\to\\a\\file.html#anchor"); 
String anchor = f.toURL().getRef(); //note: toURL is deprecated 

如果你看一下Java源代碼,你會發現它很簡單,只要:

String file = "Z:\\path\\to\\a\\file.html#anchor"; 
int ind = file.indexOf('#'); 
String anchor = ind < 0 ? null: file.substring(ind + 1); 
+0

這意味着重構整個代碼並照顧不能使用普通的java.io.File方法。 – Alexander 2010-10-06 08:16:32

相關問題