1. 程式人生 > >JAR包中讀取資原始檔

JAR包中讀取資原始檔

我們常常在程式碼中讀取一些資原始檔(比如圖片,音樂,文字等等)。在單獨執行的時候這些簡單的處理當然不會有問題。但是,如果我們把程式碼打成一個jar包以後,即使將資原始檔一併打包,這些東西也找不出來了。看看下面的程式碼:

 1 //原始碼1:
 2  3 import java.io.*;
 4 public class Resource {
 5     public  void getResource() throws IOException{
 6         File file=new File("bin/resource/res.txt");
 7         BufferedReader br=new
BufferedReader(new FileReader(file)); 8 String s=""; 9 while((s=br.readLine())!=null) 10 System.out.println(s); 11 } 12 }

顯然,單獨執行這段程式碼能夠正確指定資源中的內容,但是將該工程連同資源一起打包為JAR包之後,在另一個工程下使用,卻不能正常運行了,會報FileNotFoundException

為解決此問題,可採用如下方法,通過Class類的getResourceAsStream()

方法來獲取指定資源,這種方法是如何讀取jar中的資原始檔的,這一點對於我們來說是透明的:

 1 //原始碼3:
 2 package edu.hxraid;
 3 import java.io.*;
 4 public class Resource {
 5     public void getResource() throws IOException{
 6         //返回讀取指定資源的輸入流
 7         InputStream is=this.getClass().getResourceAsStream("/resource/res.txt"); 
 8         BufferedReader br=new
BufferedReader(new InputStreamReader(is)); 9 String s=""; 10 while((s=br.readLine())!=null) 11 System.out.println(s); 12 } 13 }

這樣,將該工程打包成JAR包之後,依舊能夠正常工作。