用里面的外部文件编译Java文件。 (CHM)

时间:2014-02-02 16:53:08

标签: java netbeans compilation chm

我在java中创建一个1文件程序,我有一个.chm文件,当用户询问如何使用该程序时,我希望该文件被调用。我不想让文件在.jar文件之外。

也许我问的是不可能的,我唯一知道的编译方法是,如果我点击“清理并构建”按钮,它会从我的.jar文件中生成.java文件。有没有办法做到这一点?

PS:我使用NetBeans创建java程序。

1 个答案:

答案 0 :(得分:1)

您可以在jar中包含任何文件(它是一个zip文件)。然后,您必须使用getResource()来访问jar中的嵌入文件。这将返回URL,您可以通过调用openStream()来获取InputStream并从中读取,可能将其提取到硬盘以供显示等。

用法是将这些文件放在“src”目录下的“resource”或“res”文件夹中。以下是我在Eclipse中的外观:

Test project with resources

然后我通过以下方式访问我的图片:

URL uImg = getClass().getResource("/res/16/Actions-edit-delete-icon-16.png");
InputStream is = uImg.openStream();
// Read the content from 'is' e.g. to extract it somewhere
is.close();

编辑:例如,要将文件"TJ.chm"从jar的"res"目录中提取到文件"/tmp/TJ.chm",您可以这样做:

// Add all necessary try/catch
InputStream is = ucmh.openStream();
OutputStream os = new BufferedOutputStream(new FileOutputStream("/tmp/TJ.chm"));
int len = 0;
byte[] buffer = new byte[8192]; // Or whichever size you prefer
while ((len = is.read(buffer)) > -1)
    os.write(buffer, 0, len);
os.close();
is.close();