我有一个jar文件 abc.jar
它有一些特定的代码在同一个jar文件的名为 temp 的文件夹中创建一个文件。
喜欢
createFile()
现在我想将 abc.jar 添加到我的其他网络项目中。应该调用此函数 createFile()并相应地创建文件。
那么有没有办法在jar文件中创建文件。
我知道jar总是被压缩和只读。
但是仍然有同样的工作,对我来说将是很大的帮助。
:)
答案 0 :(得分:1)
对于读取 abc.jar
中的文件,您可以使用ClassLoader.getResource()
,但我认为Java不提供类似的工具来向jar添加文件(出于安全目的)。
jar文件只是一个zip文件,所以如果你真的需要,你可以将它解压缩到一个临时目录,添加文件,然后用你的新文件重新创建jar。但是,我认为这不会达到您正在寻找的效果 - 无论您以这种方式添加到jar文件中的文件都无法用于正在运行的代码,因为原始jar(没有添加的文件)已经加载。
答案 1 :(得分:0)
您可以提取完整的Jar,将文件添加到解压缩的目录结构中,然后从目录结构中重新创建jar。
例如,您可以使用ZipInputStream和ZipOutputStream来实现此目标。此外,与ZipFile和ZipEntry相关的课程可能会有所帮助。
据我所知,直接添加文件是不可能的。
答案 2 :(得分:0)
看一下TrueVFS:http://truevfs.net/(或其前身TrueZip https://christian-schlichtherle.bitbucket.io/truezip/)。它提供对归档文件的虚拟文件系统访问。