Java中配置文件路徑的獲取

最近寫mybatis 忽然遇到配置文件加載的問題, 正好有機會把關於java路徑的問題整理一下。在下面的狀況中,能夠得到文件的路徑, 也能夠吧文件轉成流以便使用。

servlet 加載配置文件路徑

  • 在servlet中有一個被稱之爲servlet上下文的東西, 這個東西頗有意思,簡單的講這就是一個web路徑的對象。例如localhost:8080/demo/index.jsp,以/demo爲根路徑的servlet上下文路徑被髮送給web應用程序,在這裏servlet上下文路徑就是說這個根路徑,全部jsp和servlet應用均可以得到並使用這個路徑, 同時,這個路徑也是最經常使用和最應該使用的一個路徑。既然這麼好用就必然有得到它的一個很好的辦法,
    String path = this.getServletContext().getRealPath("xxx.file");
    經過下面這樣, 你就成功的給文件讀入了文件流。
    InputStream inputStream = new FileInputStream(path);
    這裏的getServletContext()就是獲取servlet的上下文, 而getRealPath("xxx.file");則 是爲了獲取文件的真實路徑。經過這樣也就解決了Title中得獲取配置文件的問題, 然而你說了,我不是在servlet中用的, 我是在POJO類中使用的, 你這個servlet很特殊,我總不能每次去建一個servlet來加載配置文件吧, 那好, 咱們就進入下一個話題。

普通java類中加載配置文件路徑

  1. 以classloader的方式來獲取配置文件路徑
    String path = ClassName.class.getClassLoader().getResource("xxx.file").getPath();
    這樣就獲得了一個文件的路徑,繼而咱們能夠把它轉化成流。
    InputStream inputStream = new FileInputStream(path);
    是否是很簡單呢。
  2. 用Class類加載資源文件
    InputStream inputStream = ClassName.class.getResourceAsStream("/error.xml");
  • 絕對定位,「/」開頭,此時即以classpath爲根目錄
  • 相對定位,不加「/」,則以調用getResourceAsStream類的包路徑做爲根目錄(即該類所在包下獲取資源)
q前面兩種路徑不過是冰山一角, 不過仍是能夠對學習起到必定的做用, java中得獲取獲取資源路徑的範式數不勝數, 好比應用到框架時, 能夠經過Resource類, 經過配置文件加載配置文件:classpath等等。但上面的兩種方式倒是java中最基本的兩種方式。
相關文章
相關標籤/搜索