2015-05-25 37 views
0

我正在使用eclipse。
我在我的src文件夾中放了一個.pdf文件,我想用默認的OS程序打開它。問題是,如果我用eclipse執行程序,我可以打開它(點擊菜單項一)是這樣的:
Java - 如何打開位於jar文件中的文件

File memo=new File("src/chap.pdf"); 
     try { 
      Desktop.getDesktop().open(memo); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

然而,該項目導出到一個jar文件後,這是不工作了。
因此,在我的代碼中是否存在問題,或者有另一種方法在文件在jar文件中時打開文件?

+2

提取的文件,您應該恢復該文件作爲資源如下所示:[從jar中讀取資源文件](http://stackoverflow.com/q/20389255/1065197) –

+1

只做一個小的檢查,選擇jar文件並**解壓縮它或[[官方方式](https://docs.oracle.com/javase/tutorial/deployment/jar/unpack.html),應該將.jar分解爲文件夾層次結構。 **做一個檢查,如果.pdf包含在其中** –

回答

3

在導出程序後,src路徑將不可用,並且不應以任何方式引用它。

您需要從Jar文件中提取資源,並將其寫入到本地磁盤...

try (InputStream is = getClass().getResourceAsStrea("/chap.pdf")) { 
    try (BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(...)) { 
     // Write contents like you would any file 
    } 
} catch (IOException exp) { 
    exp.printStackTrace(); 
} 

然後你可以使用與Desktop

+0

裏面的try塊,* java.io.File#createTempFile *將是一個合適的方式?? –

+0

@SrinathGanesh這取決於你。如果你想節省時間,你可以將文件提取到「已知」位置,並在再次提取之前檢查它是否存在。 – MadProgrammer