Google Prettify

2019-05-10

如何在透過class指定相對路徑

取得一個檔案有很多方法。一種是你知道絕對路徑。這是最簡單而且最穩定的方法。但很多時候,事情沒那麼簡單。因為你可能不知道系統在實際上線的時候,他機器的配置是怎樣。很多時候,你只知道他從工作目錄下的相對路徑時,這時該如何去指定這個檔案的路徑呢?

舉例來說,要讀取一個檔案,在開發的時候,可以知道這個檔案在我電的的本機的D槽,我可以輕而易舉的讀到他;可是在上線的時候,卻不知道這個檔案在那個槽(甚至搞不好上線的機器,根本就沒有"槽",對,我說的就是linux),只知道他的路徑是在:/db/crm.db下,這時候該怎麼辦呢?

解決方式

List<String> lists = IOUtils.readLines(this.getClass().getResourceAsStream("/db/crm.db"), "utf-8");

重點

  1. 主要是使用getClass().getResourceAsStream()。取得InputStream後需要做什麼不在討論範圍內。
  2. 需要使用 "/"開始。如果沒有"/",則從目前的package開始找起。如果getClass()是com.foo那就是從src/com/foo開始找起;用另一種講法,就是跟目前class相同目錄。

沒有留言 :

您或許對這些有興趣

Related Posts with Thumbnails

最後

謝謝您的閱讀,希望您可以有豐富的收獲。