這里分為具體兩種:

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

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

          【NO1】第一種

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

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

          例子:我用的開發軟件MyEclipse 6.5

          假設項目文件夾如下:

             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");
                  }
              }
                 
          }

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

              運行結果:

          a.bat

          b.png  

          就對了  

          【NO2】第二種

          建議使用下面( 2 )方法,因為(1)jar之后可能出現找不到的問題 (之前我試過出現這種情況)

          這里代碼省了

          (1)、你將所有資源打包為epm.jar,你的類位于一個包中:package core;你的圖片資源全部放在images文件夾中,而images文件夾也位于core包內。這樣的話,最終的路徑表現為:
          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(imUrl);

          (2)、另一種情況,如果你的類有很多,并且包的結構很復雜,應該把圖片放到最外層,讓所有的類通過絕對路徑來訪問該圖片

          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);

          區別非常細微,僅僅是在“images”的前面加了一個反斜杠"/",這個反斜杠就表示根目錄,沒有反斜杠就表示相對路徑。

          這些都是細心的問題了......

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          posts - 34, comments - 38, trackbacks - 0, articles - 0

          Copyright © 陳小東

          主站蜘蛛池模板: 安福县| 宜君县| 皮山县| 越西县| 邹城市| 仪征市| 吉首市| 佛坪县| 长宁区| 宜宾县| 大宁县| 泰和县| 壶关县| 平和县| 道孚县| 曲水县| 历史| 抚宁县| 武乡县| 巴马| 泾源县| 镇远县| 平顶山市| 莱芜市| 安阳县| 怀宁县| 平原县| 达拉特旗| 南丹县| 屏山县| 义马市| 台东市| 曲水县| 大庆市| 正宁县| 酉阳| 绿春县| 左贡县| 宿州市| 桃江县| 鄯善县|