如何将jar中的文件复制到jar中?

jtl999:

我想从罐子中复制文件。我要复制的文件将被复制到工作目录之外。我已经做过一些测试,所有尝试的方法最终都包含0个字节的文件。

编辑:我希望通过程序而不是手动完成文件的复制。

订购:

首先,我想说的是,之前发布的一些答案是完全正确的,但是我想告诉我,因为有时我们不能在GPL下使用开放源代码库,或者因为我们懒得下载jar XD或其他文件无论您的理由在哪里,都是独立的解决方案。

下面的函数将资源复制到Jar文件旁边:

  /**
     * Export a resource embedded into a Jar file to the local file path.
     *
     * @param resourceName ie.: "/SmartLibrary.dll"
     * @return The path to the exported resource
     * @throws Exception
     */
    static public String ExportResource(String resourceName) throws Exception {
        InputStream stream = null;
        OutputStream resStreamOut = null;
        String jarFolder;
        try {
            stream = ExecutingClass.class.getResourceAsStream(resourceName);//note that each / is a directory down in the "jar tree" been the jar the root of the tree
            if(stream == null) {
                throw new Exception("Cannot get resource \"" + resourceName + "\" from Jar file.");
            }

            int readBytes;
            byte[] buffer = new byte[4096];
            jarFolder = new File(ExecutingClass.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath()).getParentFile().getPath().replace('\\', '/');
            resStreamOut = new FileOutputStream(jarFolder + resourceName);
            while ((readBytes = stream.read(buffer)) > 0) {
                resStreamOut.write(buffer, 0, readBytes);
            }
        } catch (Exception ex) {
            throw ex;
        } finally {
            stream.close();
            resStreamOut.close();
        }

        return jarFolder + resourceName;
    }

只需将ExecutingClass更改为您的类的名称,然后像这样调用它:

String fullPath = ExportResource("/myresource.ext");

为Java 7+编辑(为了您的方便)

正如GOXR3PLUS回答并由Andy Thomas指出的那样,您可以使用以下方法实现此目标:

Files.copy( InputStream in, Path target, CopyOption... options)

有关更多详细信息,请参见GOXR3PLUS答案

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将资源文件夹从jar复制到程序文件中

如何将csv文件复制到字典中?

如何将 pexpect 的输出复制到文件中

如何将资源目录以及Jar中所有包含的文件和子文件夹复制到另一个目录中

在Fedora Linux中,如何将jar文件从位于myfolder / folderName的文件夹复制到urs / lib / jvm / java-1.8 / jre / lib / etc?

maven将特定的依赖项jar复制到.war文件中的特定目录

Gradle-将文件夹复制到jar中

如何将文件夹中的文件复制到多个文件夹中

如何将多个csv文件中的行复制到pandas中的新文件?

如何将文件多次复制到文件系统中随机选择的路径中?

如何将Docker WordPress文件从initContainer复制到Kubernetes中的emptyDir中?

如何将 Azure blob 中的文件复制到 Linux 中的某些路径

如何将内部打包文件复制到Java中的工作目录中?

如何将hadoop中的大文件的前几行复制到新文件?

如何将系统中的所有.sol文件复制到特定文件夹

如何将文件从A复制到B,仅包括B中存在的文件?

如何将文本文件从罐子复制到罐子外部的文件中?

如何将CSV文件中的标头从CSV文件复制到PostgreSQL表?

如何将zip文件中的文件复制到某个目录?

Gradle:如何将Servlet JARS复制到WAR文件中的文件夹?

如何将当前目录的文件复制到Dockerfile中的文件夹

如何将放置在蔚蓝文件存储中的.csv文件的内容复制到powershell变量?

如何将文件复制到Azure Function bin文件夹中?

如何将文件从A复制到C,仅包括B中存在的文件?

如何将目标文件复制到 Makefile 中的子文件夹?

如何将文件中的列复制到另一个空文件?

如何将多行代码复制到byebug中?

如何将值从 url 复制到 html 中

如何将目录层次结构(省略文件)复制到其他目录中?