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