JAR包中讀取資原始檔
阿新 • • 發佈:2018-12-15
我們常常在程式碼中讀取一些資原始檔(比如圖片,音樂,文字等等)。在單獨執行的時候這些簡單的處理當然不會有問題。但是,如果我們把程式碼打成一個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=newBufferedReader(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=newBufferedReader(new InputStreamReader(is)); 9 String s=""; 10 while((s=br.readLine())!=null) 11 System.out.println(s); 12 } 13 }
這樣,將該工程打包成JAR包之後,依舊能夠正常工作。