沉睡森林@漂在北京

          本處文章除注明“轉(zhuǎn)載”外均為原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處。

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            152 隨筆 :: 4 文章 :: 114 評(píng)論 :: 0 Trackbacks

          這里分為具體兩種:

          第一種:資源文件為一般后綴文件

          第二種:資源文件為圖片文件

          【NO1】第一種

            使用這行代碼可以獲取class類的根目錄的路徑

            String path =Thread.currentThread().getContextClassLoader().getResource("").getPath();

           例子:我用的開(kāi)發(fā)軟件MyEclipse 6.5

           假設(shè)項(xiàng)目文件夾如下:

             files———bin——core(生成class包)

                 |               |         |——Main.class(生成的class文件)

                 |               |

                 |               |——resource( 生成資源文件夾)

                 |                         |——a.bat

                 |                         |——b.png

                 |———src——core(源包) 

                             |             |—— Main.java(源代碼)

                             |

                             |——resource(源資源文件夾) 

                                           |——a.bat

                                           |——b.png

          //源代碼Main.java

          //============================================================

          package core;
          import java.io.File;

          public class Main {

              public static void main(String[] args){
                  try{
                  String path = Thread.currentThread().getContextClassLoader().getResource("").getPath();    //添加
                  File af=new File(path+"/resource");
                  if(!af.exists()) System.out.println("nullEXIST");;
                  String[] files =af.list();
                  if(files.length==0) System.out.println("nullLENGTH");;
                  for(int i=0;i<files.length;i++){
                      if(files[i]!=null)System.out.println(files[i]);
                      else System.out.println("null");
                  }
                  
                  }
                  catch(Exception e){
                      System.out.println("HugeERROR");
                  }
              }
                  
          }

          // ===============================================================

              運(yùn)行結(jié)果:

           a.bat

           b.png  

           就對(duì)了  

          【NO2】第二種

           建議使用下面( 2 )方法,因?yàn)椋?)jar之后可能出現(xiàn)找不到的問(wèn)題 (之前我試過(guò)出現(xiàn)這種情況)

           這里代碼省了

          (1)、你將所有資源打包為epm.jar,你的類位于一個(gè)包中:package core;你的圖片資源全部放在images文件夾中,而images文件夾也位于core包內(nèi)。這樣的話,最終的路徑表現(xiàn)為:
          epm———bin——core(生成class包)

                 |               |         |——Main.class(生成的class文件)

                 |               |

                 |               |——images( 生成資源文件夾)

                 |                         |——system.bat

                 |                         |——background.png

                 |———src——core(源包) 

                             |             |—— Main.java(源代碼)

                             |

                             |——images(源資源文件夾) 

                                           |——system.bat

                                           |——background.png

            可以通過(guò)相對(duì)路徑來(lái)訪問(wèn):       

            java.net.URL imUrl = getClass().getResource("images/background.png"); 
            ImageIcon im = new ImageIcon(imUrl);

          (2)、另一種情況,如果你的類有很多,并且包的結(jié)構(gòu)很復(fù)雜,應(yīng)該把圖片放到最外層,讓所有的類通過(guò)絕對(duì)路徑來(lái)訪問(wèn)該圖片

          epm———bin——core(生成class包)

                 |               |         |——Main.class(生成的class文件)

                 |               |

                 |               |——images( 生成資源文件夾)

                 |                         |——system.bat

                 |                         |——background.png

                 |———src——core(源包) 

                             |             |—— Main.java(源代碼)

                             |

                             |——images(源資源文件夾) 

                                           |——system.bat

                                           |——background.png

          java.net.URL imUrl = getClass().getResource("/images/background.png");
          ImageIcon im = new ImageIcon(imgUrl);

          區(qū)別非常細(xì)微,僅僅是在“images”的前面加了一個(gè)反斜杠"/",這個(gè)反斜杠就表示根目錄,沒(méi)有反斜杠就表示相對(duì)路徑。

          posted on 2010-06-01 23:32 王總兵 閱讀(1278) 評(píng)論(0)  編輯  收藏 所屬分類: Other
          主站蜘蛛池模板: 深泽县| 渝北区| 惠东县| 政和县| 洛宁县| 和林格尔县| 莒南县| 武义县| 郯城县| 水城县| 丁青县| 黎城县| 北宁市| 讷河市| 泗阳县| 邵东县| 巫山县| 密云县| 即墨市| 盘锦市| 思茅市| 长顺县| 许昌市| 武乡县| 陇南市| 利辛县| 武清区| 临桂县| 额尔古纳市| 南木林县| 淮南市| 柏乡县| 襄樊市| 武功县| 齐齐哈尔市| 修文县| 基隆市| 滦平县| 丹阳市| 凤凰县| 西畴县|