getResourceAsStream和getResource的用法及Demo實例

getResourceAsStream和getResource的用法及Demo實例linux

     用JAVA獲取文件,聽似簡單,但對於不少像我這樣的新人來講,仍是掌握頗淺,用起來感受頗深,你們最常常用的,就是用JAVA的File類,如要取得 D:/test.txt文件,就會這樣用File file = newFile("D:/test.txt");這樣用有什麼問題,相信你們都知道,就是路徑硬編碼,對於JAVA精神來講,應用應該一次成型,處處可 用,而且從現實應用來說,最終生成的應用也會部署到Windows外的操做系統中,對於linux來講,在應用中用了c:/這樣的字樣,就是失敗,因此, 咱們應該儘可能避免使用硬編碼,即直接使用絕對路徑。app

   在Servlet應用中,有一個getRealPath(String str)的方法,這個方法儘管也能夠動態地得到文件的路徑,不祕直接手寫絕對路徑,但這也是一個不被建議使用的方法,那麼,咱們有什麼方法能夠更好地得到文件呢?       那就是Class.getResource()與Class.getResourceAsStream()方法!    編碼

1、getResourceAsStream用法 首先,Java中的getResourceAsStream有如下幾種: spa

1. Class.getResourceAsStream(String path) :  path 不以’/'開頭時默認是今後類所在的包下取資源,以’/'開頭則是從 ClassPath根下獲取。其只是經過path構造一個絕對路徑,最終仍是由ClassLoader獲取資源。      2. Class.getClassLoader.getResourceAsStream(String path) : 默認則是從ClassPath根下獲取,path不能以’/'開頭,最終是由   ClassLoader獲取資源。操作系統

3. ServletContext. getResourceAsStream(String path): 默認從WebAPP根目錄下取資源,Tomcat下path是否以’/'開頭無所謂,   固然這和具體的容器實現有關。    xml

4. Jsp下的application內置對象就是上面的ServletContext的一種實現。    其次,getResourceAsStream 用法大體有如下幾種:對象

第一: 要加載的文件和.class文件在同一目錄下,例如:com.x.y 下有類me.class ,同時有資源文件myfile.xml 那麼,應該有以下代碼:    Java代碼   me.class.getResourceAsStream("myfile.xml");       資源

第二:在me.class目錄的子目錄下,例如:com.x.y 下有類me.class ,同時在 com.x.y.file 目錄下有資源文件myfile.xml   那麼,應該有以下代碼:    Java代碼   me.class.getResourceAsStream("file/myfile.xml");        部署

第三:不在me.class目錄下,也不在子目錄下,例如:com.x.y 下有類me.class ,同時在 com.x.file 目錄下有資源文件myfile.xml   那麼,應該有以下代碼:     Java代碼   me.class.getResourceAsStream("/com/x/file/myfile.xml");       get

 

 總結一下,可能只是兩種寫法    第一:前面有 「   / 」 「 / 」表明了工程的根目錄,例如工程名叫作myproject,「 / 」表明了myproject       

Java代碼  

me.class.getResourceAsStream("/com/x/file/myfile.xml");     

 第二:前面沒有 「   / 」   表明當前類的目錄  

相關文章
相關標籤/搜索