国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
java基礎(chǔ)知識3獲取資源文件的方法
java開發(fā)中,常見的resource文件有:.xml,.properties,.txt文件等,后臺開發(fā)中經(jīng)常用到讀取資源文件,處理業(yè)務(wù)邏輯,然后返回結(jié)果。
獲取資源文件的方法說明
getResource()返回:URL
getResourceAsStream () 返回的是inputstream,需要定義一個InputStream接收
//Class.getResource和Class.getResourceAsStream在使用時,路徑選擇上是一樣的。
相當于你用getResource()取得File文件后,再new InputStream(file)一樣的結(jié)果.
今天先了解一下如何讀取資源文件的URL。
以下圖的邏輯結(jié)構(gòu)為例:

有4種讀取文件URL的方法:
1.通過本類的class類的getResource方法
path不以’/'開頭時,默認是從此類所在的包下取資源;
path 以’/'開頭時,則是從ClassPath根下獲??;
// 同一個包下        URL url1 = ResourceTest.class.getResource("test1.xml");    System.out.println(url1.toString());        //輸出 file:/F:/kr-wyy/Studying/out/production/Studying/readFile/test1.xml//不同包下,用相對路徑        URL url2 = ResourceTest.class.getResource("/collection/test2.xml");    System.out.println(url2.toString());        //輸出:file:/F:/kr-wyy/Studying/out/production/Studying/collection/test2.xml//根目錄下        URL url3 = ResourceTest.class.getResource("/test3.xml");    System.out.println(url3.toString());        //輸出:file:/F:/kr-wyy/Studying/out/production/Studying/test3.xml/* 即:  file:/F:/kr-wyy/Studying/out/production/Studying/readFile/test1.xml        file:/F:/kr-wyy/Studying/out/production/Studying/collection/test2.xml        file:/F:/kr-wyy/Studying/out/production/Studying/test3.xml*/
 2、通過本類的ClassLoader的getResource方法
path不能以’/'開頭,path是從ClassPath根下獲?。?/span>
所以可以認為:類名.class.getResource("/") == 類名.class.getClassLoader().getResource("")
 URL u1 = ResourceTest.class.getClassLoader().getResource("readFile/test1.xml");//同一個包下,還是要包名/文件名        System.out.println(u1);        URL u2 = ResourceTest.class.getClassLoader().getResource("collection/test2.xml");//不同包下,要包名/文件名        System.out.println(u2);        URL u3 = ResourceTest.class.getClassLoader().getResource("test3.xml");//根目錄下直接寫文件名        System.out.println(u3);
3、通過ClassLoader的getSystemResource(),路徑和2一致
 URL r1 = ClassLoader.getSystemResource("readFile/test1.xml");//同一個包下,還是要包名/        System.out.println(r1);        URL r2 = ClassLoader.getSystemResource("collection/test2.xml");//不同包下,要包名/文件名        System.out.println(r2);        URL r3 = ClassLoader.getSystemResource("test3.xml");//根目錄下直接寫文件名        System.out.println(r3);
4、通過Thread方式,路徑和2一致(推薦此種),Thread.currentThread().getContextClassLoader()

為什么推薦此類?
Test.class.getClassLoader().getResource,因為你想要獲取某個資源文件的時候,這個資源文件的位置是相對固定的。
WEB程序,里面的jar、resources都是由Tomcat內(nèi)部來加載的,所以你在代碼中動態(tài)加載jar、資源文件的時候,首先應(yīng)該是使用Thread.currentThread().getContextClassLoader()。
如果你使用Test.class.getClassLoader(),可能會導致和當前線程所運行的類加載器不一致(因為Java天生的多線程)
                URL l1=Thread.currentThread().getContextClassLoader().getResource("readFile/test1.xml");        System.out.println(l1);        URL l2=Thread.currentThread().getContextClassLoader().getResource("collection/test2.xml");        System.out.println(l2);        URL l3=Thread.currentThread().getContextClassLoader().getResource("test3.xml");        String l4=l3.getPath();//加上getPath()則去掉前面的file:                System.out.println(l3);  //file:/F:/kr-wyy/Studying/out/production/Studying/test3.xml                System.out.println(l4);///F:/kr-wyy/Studying/out/production/Studying/test3.xml

另外,其他獲取資源文件路徑的有下面幾個:

//        獲取項目路徑        System.out.println(ResourceTest.class.getResource("").getPath());//        /F:/kr-wyy/Studying/out/production/Studying/readFile///       獲取根路徑        System.out.println(ResourceTest.class.getResource("/").getPath());//        /F:/kr-wyy/Studying/out/production/Studying/        //獲取當前工程路徑        System.out.println(System.getProperty("user.dir"));//        F:\kr-wyy\Studying//        獲取所有的類路徑 包括jar包的路徑        System.out.println(System.getProperty("java.class.path"));

上面的可以通過創(chuàng)建File文件,通過路徑來讀取文件內(nèi)容。

但是對于打包到j(luò)ar文件中的資源文件,則不能通過上面的getResource方法獲取了,但可以通過Class類的getResourceAsStream()方法來獲取 

例如:resource打包成jar包,我們讀取里面的res.txt可如下,

/返回讀取指定資源的輸入流        InputStream is=this.getClass().getResourceAsStream("/resource/res.txt");         BufferedReader br=new BufferedReader(new InputStreamReader(is));        String s="";        while((s=br.readLine())!=null)            System.out.println(s);    }

 

參考:
http://www.cnblogs.com/0616--ataozhijia/p/4094952.html
http://blog.csdn.net/zhoutaohenan/article/details/8467271
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
java中Class.getResource用法
Class.getResource和ClassLoader.getResource的區(qū)別分析
徹底搞懂Class.getResource和ClassLoader.getResource的區(qū)別和底層原理
java資源獲取分析
Myeclipse 2017 創(chuàng)建第一個servlet步驟
Servlet/JSP深入詳解:基于Tomcat的Web開發(fā)--第二章02
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服