2016-01-20 109 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