国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

this.getClass().getResourceAsStream()讀入數據

2019-11-08 20:12:16
字體:
來源:轉載
供稿:網友

http://imsnoweagle.blog.sohu.com/108074172.htmljava里面對于類進行調用配置資源的文件數據,以this.getClass().getResourceAsStream()來讀取比較合適。路徑采用相對路徑直接可以從工程的path路徑去找。主要問題是如果類中采用的是靜態塊的話,則該this.getClass()報錯,因為讀靜態塊時,可能該對象并為構造,所以用this來指向當前對象不行。ClassLoader提供了兩個方法用于從裝載的類路徑中取得資源:  public URL getResource(String name);  public InputStream getResourceAsStream(String name);這里name是資源的類路徑,它是相對與“/”根路徑下的位置。getResource得到的是一個URL對象來定位資源,而getResourceAsStream取得該資源輸入流的引用保證程序可以從正確的位置抽取數據。舉例說明:  mypackage.Hello.class.getResourceAsStream("/config/config.ini");從classpath下的config相對路徑中讀取config.iniJAVA里面對于類進行調用配置資源的文件數據,以this.getClass().getResourceAsStream()來讀取比較合適。

 

http://baoqiang2004.blog.163.com/blog/static/16819372920111130110722/(1).new FileInputStream(“a.txt”)那么,這個a.txt就應該在工程的根目錄下.(2).this.getClass().getClassLoader().getResourceAsStream(“a.txt”)在bin目錄下,或加載類的地方–包外(3).this.getClass().getResourceAsStream(“a.txt”)在bin目錄下,或加載類的地方–包內getResourceAsStream:其本質是,根據類所在的位置,去加載配置文件所在的位置,

 

http://ouyangfei0426.iteye.com/blog/1020232

http://blog.csdn.net/zhanghaipeng1989/article/details/19332489Class.getResourceAsStream() 會指定要加載的資源路徑與當前類所在包的路徑一致。例如你寫了一個MyTest類在包com.test.mycode 下,那么MyTest.class.getResourceAsStream("name") 會在com.test.mycode包下查找相應的資源。如果這個name是以 '/' 開頭的,那么就會從classpath的根路徑下開始查找。1. Class.getResourceAsStream(String path) :path 不以'/'開頭時默認是從此類所在的包下取資源,以'/'開頭則是從ClassPath(Src根目錄)根下獲取。其只是通過path構造一個絕對路徑,最終還是由ClassLoader獲取資源。    

http://hi.baidu.com/lzpsky/item/6ae30e5dec024c3494eb0526

工程的文件結構:testjee  src      config          config1.PRoperties      configproperty          ConfigPropManage.java          config2.properties          config              config4.properties      config3.properties

代碼:

package configproperty;public class ConfigPropManage { private static ConfigPropManage instance = new ConfigPropManage(); private ConfigPropManage() { public static ConfigPropManage getInstance() {  return instance;   public static void main(String[] args) {  ConfigPropManage instance = ConfigPropManage.getInstance();

    //  當前包路徑, 得到的是當前類class文件的URI目錄。不包括自己  //out: file:/D:/workplace-Ec/workspace_jee/testjee/bin/configproperty/  System.out.println(instance.getClass().getResource(""));    // 當前類路徑, 得到的是當前的classpath的絕對URI路徑  //out: file:/D:/workplace-Ec/workspace_jee/testjee/bin/  System.out.println(instance.getClass().getResource("/"));  

 ////////////////////////////////////////////////config1.properties///////////////////////////////  //不加“/”,則表示從當前類所在的包configproperty下查找該資源config/config1.properties。沒找到.  //out: 11:null  System.out.println("11:"+instance.getClass().getResourceAsStream("config/config1.properties"));    //加“/”,則表示從類路徑下也就是從classes文件夾下查找資源,找到。  //out: 12:java.io.BufferedInputStream@37a71e93  System.out.println("12:"+instance.getClass().getResourceAsStream("/config/config1.properties"));    //加“/”,則表示從類路徑下也就是從classes文件夾下查找資源,沒找到。  System.out.println("13:"+instance.getClass().getResourceAsStream("/config1.properties"));    //不加“/”,則表示從當前類所在的包configproperty下查找該資源config1.properties。沒找到.  System.out.println("14:"+instance.getClass().getResourceAsStream("config1.properties"));    //加“/”,則表示從類路徑下也就是從classes文件夾下查找資源,沒找到。  System.out.println("15:"+instance.getClass().getResource("/config1.properties"));     //不加“/”,則表示從當前類所在的包configproperty下查找該資源config1.properties。沒找到.  System.out.println("16:"+instance.getClass().getResource("config1.properties"));     //加“/”,則表示從類路徑下也就是從classes文件夾下查找資源,沒找到。  //out: 17:file:/D:/workplace-Ec/workspace_jee/testjee/bin/config/config1.properties  System.out.println("17:"+instance.getClass().getResource("/config/config1.properties"));     //不加“/”,則表示從當前類所在的包configproperty下查找該資源config/config1.properties。沒找到.  System.out.println("18:"+instance.getClass().getResource("config/config1.properties"));   

 ////////////////////////////////////////////////config2.properties//////////////////////////////////  //加“/”,則表示從類路徑下也就是從classes文件夾下查找資源,沒找到。  System.out.println("23:"+instance.getClass().getResourceAsStream("/config2.properties"));    //文件名前不加“/”,則表示從當前類所在的包configproperty下查找該資源config2.properties。找到.  //out: 24:java.io.BufferedInputStream@7c3df479  System.out.println("24:"+instance.getClass().getResourceAsStream("config2.properties"));    //加“/”,則表示從類路徑下也就是從classes文件夾下查找資源,沒找到。  System.out.println("25:"+instance.getClass().getResource("/config2.properties"));     //文件名前不加“/”,則表示從當前類所在的包configproperty下查找該資源config2.properties。找到  //out: 26:file:/D:/workplace-Ec/workspace_jee/testjee/bin/configproperty/config2.properties  System.out.println("26:"+instance.getClass().getResource("config2.properties"));   

 

 ////////////////////////////////////////////////config3.properties/////////////////////////////////    //加“/”,則表示從類路徑下也就是從classes文件夾下查找資源config3,找到。    //out: 33:java.io.BufferedInputStream@7106e68e  System.out.println("33:"+instance.getClass().getResourceAsStream("/config3.properties"));    //文件名前不加“/”,則表示從當前類所在的包configproperty下查找該資源config3.properties。沒找到  System.out.println("34:"+instance.getClass().getResourceAsStream("config3.properties"));    //加“/”,則表示從類路徑下也就是從classes文件夾下查找資源config3,找到。  //out: 35:file:/D:/workplace-Ec/workspace_jee/testjee/bin/config3.properties  System.out.println("35:"+instance.getClass().getResource("/config3.properties"));     //文件名前不加“/”,則表示從當前類所在的包configproperty下查找該資源config3.properties。沒找到  System.out.println("36:"+instance.getClass().getResource("config3.properties"));  

 

 ////////////////////////////////////////////////config4.properties////////////////////////////////////  //不加“/”,則表示從當前類所在的包configproperty下查找該資源config/config4.properties。找到  //out: 41:java.io.BufferedInputStream@7e6cbb7a  System.out.println("41:"+instance.getClass().getResourceAsStream("config/config4.properties"));    //加“/”,則表示從類路徑下也就是從classes文件夾下查找資源config/config4.properties,沒找到。  System.out.println("42:"+instance.getClass().getResourceAsStream("/config/config4.properties"));    //加“/”,則表示從類路徑下也就是從classes文件夾下查找資源config4.properties,沒找到。  System.out.println("43:"+instance.getClass().getResourceAsStream("/config4.properties"));    //文件名前不加“/”,則表示從當前類所在的包configproperty下查找該資源config4.properties。沒找到  System.out.println("44:"+instance.getClass().getResourceAsStream("config4.properties"));    //加“/”,則表示從類路徑下也就是從classes文件夾下查找資源,沒找到。  System.out.println("45:"+instance.getClass().getResource("/config4.properties"));     //文件名前不加“/”,則表示從當前類所在的包configproperty下查找該資源config4.properties。沒找到  System.out.println("46:"+instance.getClass().getResource("config4.properties"));     //加“/”,則表示從類路徑下也就是從classes文件夾下查找資源,沒找到。  System.out.println("47:"+instance.getClass().getResource("/config/config4.properties"));     //不加“/”,則表示從當前類所在的包configproperty下查找該資源config/config4.properties。找到  //out: 48:file:/D:/workplace-Ec/workspace_jee/testjee/bin/configproperty/config/config4.properties  System.out.println("48:"+instance.getClass().getResource("config/config4.properties")); 

 }

疑問:      //如果類路徑下的當前包有22.properties文件,則輸出:6: file:/E:/myobject/myspider/build/classes/myspider/22.properties      //否者輸出源文件下的22.properties文件的路徑,則輸出:6:file:/E:/myobject/myspider/src/myspider/22.properties     System.out.println("6:"+t.getClass().getResource("22.properties"));       //如果類路徑下有11.properties文件,則輸出7:file:/E:/myobject/myspider/build/classes/11.properties     //否者輸出源文件下的11.properties文件的路徑,則輸出:7:file:/E:/myobject/myspider/src/11.properties     System.out.println("7:"+t.getClass().getResource("/11.properties"));

this.getClass().getResourceAsStream()讀入數據
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昌图县| 交口县| 铜川市| 张掖市| 云浮市| 连城县| 荥阳市| 清流县| 赣州市| 阿尔山市| 宁城县| 樟树市| 乐山市| 泰顺县| 延川县| 高淳县| 汶川县| 龙陵县| 都兰县| 迭部县| 永仁县| 洛隆县| 西宁市| 长泰县| 东宁县| 虹口区| 平乐县| 福安市| 龙山县| 靖州| 定南县| 封开县| 军事| 木兰县| 新蔡县| 枝江市| 原平市| 呈贡县| 漠河县| 阿瓦提县| 连城县|