我在java中创建一个1文件程序,我有一个.chm
文件,当用户询问如何使用该程序时,我希望该文件被调用。我不想让文件在.jar
文件之外。
也许我问的是不可能的,我唯一知道的编译方法是,如果我点击“清理并构建”按钮,它会从我的.jar
文件中生成.java
文件。有没有办法做到这一点?
PS:我使用NetBeans创建java程序。
答案 0 :(得分:1)
您可以在jar中包含任何文件(它是一个zip文件)。然后,您必须使用getResource()
来访问jar中的嵌入文件。这将返回URL
,您可以通过调用openStream()
来获取InputStream
并从中读取,可能将其提取到硬盘以供显示等。
用法是将这些文件放在“src”目录下的“resource”或“res”文件夹中。以下是我在Eclipse中的外观:
然后我通过以下方式访问我的图片:
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();