2016-01-20 143 views
0

我正在構建一個程序,我需要用Os的默認文本閱讀器打開一個簡單的.txt文件。我知道你可以這樣做:從類路徑(Jar內部)的外部程序打開文件

Desktop desktop = Desktop.getDesktop(); 
desktop = open(new File("filename")); 

但是,這將打開一個文件從系統的文件路徑而不是類路徑。由於我的程序必須分發並傳遞,因此幫助文件需要保留在.jar文件中。

我試着用getClass().getResource("/resources/Help.txt")

像這樣實現它:

Desktop desktop = Desktop.getDesktop(); 
desktop = open(new File(getClass().getResource("/resources/Help.txt"))); 

但是,這是行不通的。我甚至嘗試過:

Desktop desktop = Desktop.getDesktop(); 
desktop = open(new File(getClass().getResourceAsStream("/resources/Help.txt"))); 

但是這也行不通。

Help.txt文件已經在類路徑中,我只需要弄清楚如何使用外部程序打開這個文件,但是從類路徑中。這可能嗎?如果是,如何?如果沒有,是否有其他方法來實現呢?

+0

*「我只需要弄清楚如何使用外部程序打開此文件」*爲什麼'外部'?如果它只是一個文本文件,我會使用'JTextArea'來顯示它。 –

+0

@AndrewThompson我會這樣做,但這意味着我需要完全創建一個新的JPanel和一個新窗口。這是一個幫助按鈕,我寧願讓它在外部應用程序中打開。 –

+0

*「但這意味着我需要完全創建一個新的JPanel和一個新窗口。」*哇!它只需要幾行代碼。少於將資源首先提取到文件所需的時間。但是使用非模態'JDialog'而不是'JWindow'或'JFrame' .. –

回答

1

..有沒有其他的方法來實現呢?

將字節解壓縮到臨時文件。然後使用桌面API顯示臨時文件。

+0

我該怎麼做呢?代碼的實現將會非常美妙:) –

+0

*「代碼執行會很棒:)」*使用我的建議來實現目標的實際努力的任何跡象都會很棒。 (SO不是代碼生成服務。) –

+0

Jeez。對不起,請求幫助。我只是11年級的學生,已經在這裏工作了3天。我想我一直在付出比你想象的更多的努力。 –

0

你可以試試這個:

private void ajuda(){ 

    try { 
     File arquivo = new File((IgJanelaPrincipal.class.getResource 
        ("/ti/lpv/help/help.pdf").toURI())); 
     Desktop.getDesktop().open(arquivo); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (URISyntaxException e){ 
     e.printStackTrace(); 
    } 
} 

很抱歉,如果我的標識符看起來很奇怪,這是從一所大學的項目代碼塊,再加上英語不是我的第一浪。 heheh